sql >> Base de Datos >  >> RDS >> Mysql

Usando PHP para ejecutar múltiples consultas MYSQL

No ejecute un montón de consultas a la vez. Por lo general, el éxito de una depende de que todas las demás operaciones se hayan realizado correctamente, por lo que no puede simplemente avanzar como si nada hubiera salido mal cuando hay un problema.

Puedes hacerlo así:

$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();
}

No olvide habilitar excepciones para que cualquier falla en la consulta detenga su proceso en lugar de que la cosa se salga de control.

La razón por la que no usa multi_query es porque esa función no admite valores de marcador de posición. Si necesita introducir datos de usuario de algún tipo en esta consulta, debe usar bind_param para hacerlo con seguridad. Sin valores de marcador de posición, está expuesto a errores de inyección SQL, y uno solo de ellos es suficiente para hacer que toda su aplicación sea vulnerable.

Vale la pena señalar que PDO es mucho más flexible y adaptable que mysqli así que si no estás demasiado interesado en mysqli , vale la pena considerar un cambio.