Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando PHP para executar várias consultas MYSQL


Não execute um monte de consultas de uma só vez. Normalmente, o sucesso de uma depende de todas as outras operações terem sido executadas corretamente, então você não pode simplesmente avançar como se nada estivesse errado quando há um problema.

Você pode fazer assim:
$queries = [
  "CREATE TEMPORARY TABLE tmp SELECT * FROM event_categoriesBU WHERE id = 1",
  "UPDATE tmp SET id=100 WHERE id = 1",
  "INSERT INTO event_categoriesBU SELECT * FROM tmp WHERE id = 100"
];

foreach ($query as $query) {
  $stmt = $conn->prepare($query);
  $stmt->execute();
}

Não se esqueça de ativar exceções para que qualquer falha de consulta pare seu processo em vez de ficar fora de controle.

O motivo pelo qual você não use multi_query é porque essa função não suporta valores de espaço reservado. Se você precisar introduzir algum tipo de dado do usuário nesta consulta, você precisa usar bind_param para fazê-lo com segurança. Sem valores de espaço reservado, você está exposto a bugs de injeção de SQL, e um único deles é suficiente para tornar todo o seu aplicativo vulnerável.

Vale a pena notar que o PDO é muito mais flexível e adaptável do que mysqli então se você não está muito investido em mysqli , vale a pena considerar um switch.