Maison >base de données >tutoriel mysql >MySQLi peut-il préparer plusieurs requêtes dans une seule instruction ?
MySQLI peut-il préparer plusieurs requêtes dans une seule instruction ?
Bien qu'il ne soit pas possible de préparer plusieurs requêtes avec une seule instruction MySQLi, des solutions de contournement existent pour obtenir une fonctionnalité similaire.
Préparation multi-instructions
Les tentatives de préparation de plusieurs requêtes dans une seule instruction MySQLi entraîneront une erreur. Alternativement, vous pouvez créer plusieurs instructions préparées :
<code class="php">$stmt = $mysqli->prepare("SELECT * FROM users"); $stmt2 = $mysqli->prepare("INSERT INTO orders (user_id) VALUES (?)");</code>
Combiner des instructions préparées
Pour exécuter plusieurs requêtes de manière contrôlée, vous pouvez combiner les instructions préparées à l'aide d'un transaction :
<code class="php">mysqli->begin_transaction(); $stmt->execute(); $stmt2->execute(); mysqli->commit(); // Execute transaction</code>
Cela garantit que les deux requêtes sont exécutées avec succès ou pas du tout.
Gestion des erreurs
Si l'une des instructions préparées échoue pendant l'exécution, la transaction sera annulée et aucune modification ne sera apportée. Il est essentiel de vérifier les erreurs après l'exécution d'une instruction préparée :
<code class="php">if ($stmt->errno != 0) { echo "Error: " . $stmt->error; }</code>
Conseil supplémentaire
L'erreur "appel à une fonction membre sur un non-objet" est généralement se produit lorsque la méthode prepare() échoue. Assurez-vous que votre chaîne de requête est syntaxiquement correcte avant de continuer.
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!