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
Pour résoudre cette erreur, la solution suivante est proposée :
do {} while (mysqli_more_results($db) && mysqli_next_result($db));
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 }
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 }
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!