Maison >développement back-end >tutoriel php >Comment résoudre l'erreur « Normes strictes : mysqli_next_result() avec mysqli_multi_query » ?

Comment résoudre l'erreur « Normes strictes : mysqli_next_result() avec mysqli_multi_query » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-24 05:41:17668parcourir

How to Resolve

Normes strictes : résolution de l'erreur "mysqli_next_result() avec mysqli_multi_query"

Problème :

Lors de l'utilisation de mysqli_multi_query, les utilisateurs peuvent rencontrer une erreur « Normes strictes » liée à mysqli_next_result(). Cette erreur indique qu'il n'y a pas de prochain ensemble de résultats à traiter.

Réponse initiale :

Une réponse a tenté de corriger le problème en modifiant la $querystring mais n'a pas résolu la cause première de l’erreur des normes strictes. Une autre réponse a conseillé de changer la structure de la boucle de "DO WHILE" à "WHILE", ce qui n'est pas nécessaire.

Solution réelle :

Pour résoudre l'erreur, modifiez le code comme suit :

do {
    if ($result = mysqli_store_result($db)) {
        // Process result set
    }
} while (mysqli_more_results($db) && mysqli_next_result($db));

Cela garantit que la condition de la boucle sera remplie uniquement lorsqu'il y aura plus d'ensembles de résultats à traiter, empêchant ainsi le erreur.

Considérations supplémentaires :

  • Dans l'exemple fourni, les requêtes INSERT sont exécutées, qui ne produisent pas d'ensembles de résultats. Par conséquent, la boucle ne s’exécutera pas dans ce cas. Pensez à utiliser mysqli_affected_rows() pour récupérer le nombre de lignes affectées.
  • Pour une solution complète, il est conseillé d'inclure la gestion des erreurs pour afficher les erreurs le cas échéant.

Amélioré Extrait :

if (mysqli_multi_query($db, $querystring)) {
    do {
        if ($result = mysqli_store_result($db)) {
            // Process result set
            mysqli_free_result($result);
        } else if (mysqli_error($db)) {
            echo "Error: " . mysqli_error($db);
            break;
        }
    } while (mysqli_more_results($db) && mysqli_next_result($db));
}

Conclusion :

L'erreur « Normes strictes : mysqli_next_result() : Il n'y a pas de jeu de résultats suivant » est résolue en utilisant mysqli_more_results () pour vérifier la présence d’ensembles de résultats supplémentaires. L'extrait amélioré gère les résultats positifs et négatifs des opérations mysqli_multi_query et mysqli_store_result.

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