Exécution de requêtes MySQL consécutives en PHP
En programmation PHP, il est possible d'exécuter plusieurs requêtes MySQL consécutivement. Cependant, certains utilisateurs ont rencontré des erreurs de syntaxe en tentant de le faire. Cet article vise à fournir des conseils sur la résolution de ces problèmes et l'utilisation de méthodes appropriées pour l'exécution de plusieurs requêtes.
Une approche courante pour exécuter plusieurs requêtes consiste à utiliser un point-virgule (;) comme séparateur entre chaque requête. Par exemple, dans l'extrait de code PHP fourni, la variable $sql concatène trois instructions MySQL : créer une table temporaire, mettre à jour une ligne dans la table temporaire et insérer des données de la table temporaire dans la table principale.
Cependant, MySQL nécessite un nouvel appel d'exécution de requête pour chaque instruction distincte. Par conséquent, l'exécution de la variable $sql concaténée avec $conn->query($sql) entraînerait une erreur de syntaxe.
Pour résoudre le problème, il est recommandé de préparer et d'exécuter chaque requête individuellement, comme démontré. dans l'extrait de code amélioré fourni dans la réponse :
$queries = [ "CREATE TEMPORARY TABLE tmp SELECT * FROM event_categoriesBU WHERE id = 1", "UPDATE tmp SET>
Cette approche sépare chaque requête en sa propre instruction et permet une exécution correcte. Il est important de noter que la fonction multi_query ne prend pas en charge les valeurs d'espace réservé, ce qui expose l'application à d'éventuelles vulnérabilités d'injection SQL.
Pour une flexibilité et une adaptabilité améliorées, envisagez d'utiliser PDO (PHP Data Objects) au lieu de MySQLi. PDO offre des fonctionnalités plus robustes, notamment la prise en charge des valeurs d'espace réservé et une sécurité améliorée contre l'injection SQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!