Maison > développement back-end > tutoriel php > Comment gérer correctement les erreurs `mysqli_next_result()` dans `mysqli_multi_query()` de PHP ?

Comment gérer correctement les erreurs `mysqli_next_result()` dans `mysqli_multi_query()` de PHP ?

DDD
Libérer: 2024-12-07 15:50:13
original
940 Les gens l'ont consulté

How to Properly Handle `mysqli_next_result()` Errors in PHP's `mysqli_multi_query()`?

Normes strictes : mysqli_next_result() Erreur avec mysqli_multi_query

Dans le code PHP fourni, tentative d'utilisation de mysqli_multi_query() pour exécuter plusieurs requêtes dans un seul appel à la base de données déclenche des normes strictes erreur :

mysqli_next_result(): There is no next result set. Please, call mysqli_more_results()/mysqli::more_results() to check whether to call this function/method
Copier après la connexion

Pour résoudre cette erreur, la solution suivante est proposée :

do {} while (mysqli_more_results($db) && mysqli_next_result($db));
Copier après la connexion

Cette modification garantit que mysqli_more_results() est vérifié avant d'utiliser mysqli_next_result(). De plus, puisqu'aucun jeu de résultats n'est renvoyé dans le code fourni, vérifier mysqli_affected_rows() au lieu d'une sortie conditionnelle pourrait être une meilleure approche.

Une solution plus complète qui gère les requêtes avec ou sans jeux de résultats à l'aide de mysqli_multi_query() est fourni :

if (mysqli_multi_query($mysqli, implode(';', $queries))) {
    do {
        if ($result = mysqli_store_result($mysqli)) {
            // Process result set
        }
    } while (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli));
}

if ($mysqli_error = mysqli_error($mysqli)) {
    // Handle error
}
Copier après la connexion

Alternativement, une version "réinventée" de l'extrait utilisant une boucle while est présenté :

while ((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, implode(';', $queries)))) {
    // Process query
}

if ($mysqli_error = mysqli_error($mysqli)) {
    // Handle error
}
Copier après la connexion

Ces extraits fournissent un mécanisme robuste pour gérer plusieurs requêtes et ensembles de résultats, ce qui les rend adaptés à un plus large éventail de scénarios.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal