在对文档multi_query说:
multi_query
如果第一条语句失败,则返回FALSE。要从其他语句检索后续错误,必须首先调用mysqli_next_result()。
在对文档next_result说:
next_result
成功返回TRUE,失败返回FALSE。
最后,文档中发布的示例multi_query使用返回值from next_result来确定何时不再有查询。例如停止循环:
<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); } $query = "SELECT CURRENT_USER();"; $query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5"; /* execute multi query */ if ($mysqli->multi_query($query)) { do { /* store first result set */ if ($result = $mysqli->store_result()) { while ($row = $result->fetch_row()) { printf("%s\n", $row[0]); } $result->free(); } /* print divider */ if ($mysqli->more_results()) { printf("-----------------\n"); } } while ($mysqli->next_result()); // <-- HERE! } /* close connection */ $mysqli->close(); ?>
我不知道提供的查询数量,也不知道将要执行的SQL。因此,我不能仅将查询数量与返回结果数量进行比较。但是,如果第三个查询是损坏的查询,那么我想向用户显示错误消息。但是我似乎没有办法判断是否next_result失败是因为没有更多的查询要执行,还是因为SQL语法错误。
如何检查所有查询中的错误?
尽管有文档中的代码示例,但更好的方法可能是这样的:
if ($mysqli->multi_query(...)) { do { // fetch results if (!$mysqli->more_results()) { break; } if (!$mysqli->next_result()) { // report error break; } } while (true); }