得到以下简单的查询,该查询通过 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 函数只接受一个查询,但您给了它两个,并用分号分隔。尝试以下任一方法:

  1. 单独运行每个查询(不知道这是否有效):

    mysql_query( "SET @N=-1" );
    mysql_query( "SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`" );
    
  2. 使用 mysqli多重查询 函数(或 磷酸二氢钾 如果有则等同)。

回答您更新的问题:检查 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命令。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top