严格标准:解决 mysqli_next_result() 与 mysqli_multi_query 错误
确保正确使用 mysqli_multi_query 对于避免遇到“严格标准”消息至关重要。虽然消除分号可能已经消除了问题,但它并没有解决核心问题。
要解决错误消息,请考虑以下建议:
了解 mysqli_next_result()
mysqli_next_result() 将结果指针前进到由mysqli_multi_query()。然而,它的执行需要一个初始结果集,这并不能在所有情况下得到保证。
解决方案
在 'do' 循环中合并以下检查:
do { if ($result = mysqli_store_result($db)) { // 处理结果集 } } while (mysqli_more_results($db) && mysqli_next_result($db));
替代语法:WHILE{} 循环
While 经典的“IF(){DO{} WHILE}" 语法有效,是一种简化且更具可读性的替代方案是:
while((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, 内爆(';', $queries))))
这种方法明确定义了执行循环和检查结果集的条件。
综合片段
对于综合解决方案,请考虑以下片段来处理带或不带结果集的查询:
经典"IF(){DO{} WHILE}" 语法:
if (mysqli_multi_query($mysqli, implode(';', $queries))) { do { echo "<br><br>", key($queries), ": ", current($queries); // display key:value @ pointer if ($result = mysqli_store_result($mysqli)) { // if a result set 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 } while (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
重新发明的轮子 "WHILE{}" 语法:
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 } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
这些片段有效地处理带有或不带有结果集的查询,并提供详细的错误处理以用于调试目的。
以上是如何使用 mysqli_multi_query 解决'严格标准:解决 mysqli_next_result() 错误”?的详细内容。更多信息请关注PHP中文网其他相关文章!