mysqli 多个查询 - 设置变量产生布尔错误/如何跳过这个?
-
22-07-2019 - |
题
得到以下简单的查询,该查询通过 phpmyadmin 可以正常工作,但是当我将其添加到我的 php 网站时,没有返回结果,也没有错误/警告消息。如果我删除“设置 @n = -1;”然后它可以正常工作。
<?php
$db_connect = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, true);
mysql_select_db(DB_NAME, $db_connect);
$test_query = mysql_query("SET @N=-1;SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`;");
for ($i = 0; $i <= mysql_num_rows($test_query)-1; $i++) {
echo mysql_result($db_directorymap, $i, 0) . " " . mysql_result($db_directorymap, $i, 1) . "<br />";
}
?>
更新:我刚刚转移到 mysqli,但当然我仍然有 mysql 语句和 mysqli_multi_query 的问题。似乎当它运行查询的第一部分时,返回的结果是空的,因此给出了布尔错误。我猜我必须跳过第一组结果,但我不知道该怎么做?
解决方案
这是因为 mysql_query
函数只接受一个查询,但您给了它两个,并用分号分隔。尝试以下任一方法:
单独运行每个查询(不知道这是否有效):
mysql_query( "SET @N=-1" ); mysql_query( "SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`" );
回答您更新的问题:检查 PHP 手册页中的 multi_query。我想你会想用 mysqli::next_result
. 。像这样,使用程序风格:
mysqli_multi_query($link, $query);
mysqli_next_result($link);
if ($result = mysqli_store_result($link)) {
while ($row = mysqli_fetch_row($result)) {
printf("%s\n", $row[0]);
}
mysqli_free_result($result);
}
其他提示
通过的mysql_query多个查询,不支持,所以我猜它只是执行SET命令,而不是随后的SELECT命令。
不隶属于 StackOverflow