Php mysqli multiple querys-set变量产生布尔错误/如何跳过此错误?

Php mysqli multiple querys-set变量产生布尔错误/如何跳过此错误?,php,mysql,mysqli,multi-query,Php,Mysql,Mysqli,Multi Query,通过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

通过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\u multi\u查询有问题。当它运行查询的第一部分时,返回的结果似乎是空的,因此给出了一个布尔错误。我猜我必须跳过第一组结果,但我不知道怎么做?

通过mysql\u query的多个查询不受支持,所以我猜它只是在执行set命令,而不是后续的SELECT命令。

这是因为
mysql\u query
函数只接受一个查询,但您给了它两个,用分号分隔。尝试以下任一方法:

  • 分别运行每个查询(不知道这是否可行):

  • 与函数一起使用(如果有,则使用等效函数)

  • 要回答更新的问题,请查看PHP手册页面中的multi_查询。我想您应该使用
    mysqli::next\u 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);
    }
    

    不,我还是搞不懂这个。这让我头疼!我不知道如何转到下一个结果集而不产生错误“警告:mysqli_free_result()期望参数1为mysqli_result,给定布尔值”。我不能使用errno(),因为我得到了布尔响应,如果不首先调用查询,我就无法通过布尔响应!?必须有办法解决这个问题……您可能不需要释放第一个结果(它在脚本末尾被释放)。但是由于错误,您可能将错误的变量传递到函数中-您需要从
    $result=mysqli\u store\u result($link)
    传递$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);
    }