Normes strictes : erreur mysqli_next_result() avec mysqli_multi_query
Problème :
Utilisation de mysqli_multi_query( ) déclenche des « normes strictes » erreur liée à mysqli_next_result().
Solution :
Pour résoudre ce problème, utilisez le code suivant :
do{} while(mysqli_more_results($db) && mysqli_next_result($db));
Explication :
L'erreur de normes strictes se produit car mysqli_more_results() doit être appelé pour vérifier si mysqli_next_result() doit être utilisé. L'extrait de code fourni garantit que mysqli_next_result() n'est appelé que s'il existe un autre jeu de résultats.
Considérations :
Améliorations :
Pour une approche plus robuste, considérez l'extrait de code suivant :
if(mysqli_multi_query($db,$querystring)){ do{ $cumulative_rows+=mysqli_affected_rows($db); } while(mysqli_more_results($db) && mysqli_next_result($db)); } if($error_mess=mysqli_error($db)){echo "Error: $error_mess";} echo "Cumulative Affected Rows: $cumulative_rows";
Cet extrait de code :
Remarques supplémentaires :
Pour les utilisateurs qui ne sont pas familiers avec mysqli_multi_query(), voici un extrait de code polyvalent qui gère les requêtes avec ou sans jeux de résultats :
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)))){ echo "<br><br>",key($queries),": ",current($queries); // display array pointer key:value if($result=mysqli_store_result($mysqli)){ while($rows=mysqli_fetch_assoc($result)){ echo "<br>Col = {$rows["Col"]}"; } mysqli_free_result($result); } echo "<br>Rows = ",mysqli_affected_rows($mysqli); // acts like num_rows on SELECTs }
Cet extrait de code :
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!