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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-29 02:41:30398parcourir

Can MySQLi Prepare Multiple Queries in a Single Statement?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn