Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation de PHP pour exécuter plusieurs requêtes MYSQL

Ne lancez pas un tas de requêtes à la fois. Habituellement, le succès de l'une dépend de la bonne exécution de toutes les autres opérations. Vous ne pouvez donc pas vous contenter de passer au bulldozer comme si de rien n'était lorsqu'il y a un problème.

Vous pouvez le faire comme ceci :

$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'oubliez pas d'activer les exceptions afin que tout échec de requête arrête votre processus au lieu que la chose devienne incontrôlable.

La raison pour laquelle vous ne faites pas utiliser multi_query est parce que cette fonction ne prend pas en charge les valeurs d'espace réservé. Si vous avez besoin d'introduire des données utilisateur quelconques dans cette requête, vous devez utiliser bind_param afin de le faire en toute sécurité. Sans valeurs d'espace réservé, vous êtes exposé à des bogues d'injection SQL, et un seul d'entre eux suffit à rendre toute votre application vulnérable.

Il convient de noter que PDO est beaucoup plus flexible et adaptable que mysqli donc si vous n'êtes pas trop investi dans mysqli , cela vaut la peine d'envisager un changement.