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
895 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!

source:php.cn
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