通过phpmyadmin得到以下简单查询,但是当我将它添加到我的php网站时,没有返回任何结果,也没有错误/警告消息。如果我删除“SET @ 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的问题。它似乎在运行查询的第一部分时返回的结果为空,因此给出了布尔错误。我猜我必须跳过第一组结果,但我不知道该怎么做?
答案 0 :(得分:2)
这是因为mysql_query
函数只接受一个查询,但你已经给它两个,用分号分隔。尝试:
单独运行每个查询(不知道这是否有效):
mysql_query( "SET @N=-1" );
mysql_query( "SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`" );
将mysqli与multi_query函数一起使用(如果有的话,使用PDO等效函数。)
要回答您更新的问题:请查看multi_query的PHP手册页。我想你会想要使用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);
}
答案 1 :(得分:0)
不支持通过mysql_query进行多次查询,所以我猜它只执行SET命令,而不是后续的SELECT命令。