我有代码,它基本上是一个副本php.net的代码,但由于某种原因它不起作用。这是 php.net 上的代码:
<?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());
}
/* close connection */
$mysqli->close();
?>
我所做的第一个更改是连接:
$mysqli = new mysqli("localhost", "root", "", "fanfiction");
我所做的第二个更改是查询:
$query = "SELECT first FROM tests;";
$query .= "SELECT second FROM tests;";
$query .= "SELECT third FROM tests;";
$query .= "SELECT fourth FROM tests";
编辑:我的更改的完整代码
<?php
$mysqli = new mysqli("localhost", "root", "", "fanfiction");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT first FROM tests;";
$query .= "SELECT second FROM tests;";
$query .= "SELECT third FROM tests;";
$query .= "SELECT fourth FROM tests";
/* 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());
}
/* close connection */
$mysqli->close();
?>
我得到的错误:
严格标准: mysqli::next_result():没有下一个结果集。
请打电话mysqli_more_results()/mysqli::more_results()去检查
是否调用这个函数/方法address在线的电话号码
我在网上搜索了一个解决方案,特别是在 StackOverflow 上,但我没有找到有用的解决方案。我发现的大多数解决方案都是这两个之一:
- In 这个解决方案,@哈默里特说要改变循环
do-while
to while
。这说明php.net的代码逻辑有问题,我觉得很难相信。但更重要的是,它对我不起作用。
- In 这个解决方案, @米克马库萨建议在其中添加一个条件
while
并改变$mysqli->next_result()
to $mysqli->next_result() && $mysqli->more_results()
,但是这个解决方案效果不太好。它确实消除了错误,但忽略了最后的结果。