Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysqli多查询-排序结果_Php_Mysqli_Multi Query - Fatal编程技术网

Php Mysqli多查询-排序结果

Php Mysqli多查询-排序结果,php,mysqli,multi-query,Php,Mysqli,Multi Query,我想将sql语句中的每个结果保存在不同的数组中。我试过: $sql = "SELECT * FROM `link_server` WHERE `in_use` = false;"; $sql .= "SELECT * FROM `link_queue` WHERE `active` = false;"; if ($db->multi_query($sql)) { do {

我想将sql语句中的每个结果保存在不同的数组中。我试过:

        $sql = "SELECT * FROM `link_server` WHERE `in_use` = false;";
        $sql .= "SELECT * FROM `link_queue` WHERE `active` = false;";

        if ($db->multi_query($sql))
        {
            do
            {
                // Erstes Abfrageergebnis ausgeben
                if ($result = $db->store_result())
                {
                    // Abfrageergebnis ausgeben
                    while ($server_fetch = $result->fetch_array())
                    {
                        $server[] = $server_fetch;
                    }

                    $result->close();

                }
                // Trenner fuer Zweites Abfrageergebnis
                if ($db->more_results())
                {
                    echo "<hr />test";
                    $queue[] = $server_fetch;
                }
            } while ($db->next_result());
        echo "Servers:";
        print_r($server);
        echo "Queue:";
        print_r($queue);
        }           
第一条语句的结果应保存在数组$server中,第二条语句应保存在数组$queue中

上面的示例将两条语句的完整返回存储在第一个数组$server中。第二个数组为空

我怎样才能解决这个问题

谢谢你的帮助

是一种标记已到达查询结果末尾的方法,而不是获取下一组结果。您可以使用它来通知循环开始加载下一个数组,例如通过设置标志

如果$result=$mysqli->store\u result{ 而$server\u fetch=$result->fetch\u行{ 如果!$s{ $server[]=$server\u fetch; }否则{ $queue[]=$server\u fetch; } } $result->close; } /*下一组结果*/ 如果$mysqli->更多结果{ $second=true; } 或者,您可以使用如下变量:

/*设置变量*/ $server=array; $queue=array; $active='server'; /*执行多重查询*/ 如果$mysqli->multi_query$query{ 做{ /*存储结果集*/ 如果$result=$mysqli->store\u result{ 而$server\u fetch=$result->fetch\u行{ ${$active}[]=$server\u fetch; } $result->close; } /*下一组结果*/ 如果$mysqli->更多结果{ $active='queue'; } }而$mysqli->next_result; }
虽然我必须同意评论,但这会给一对简单的请求增加很多工作量和额外的代码复杂性。

为什么要同时执行多个查询?这似乎是不必要的复杂?因为它更快更容易概述;但这不是问题所在;无论如何,我怀疑用这种方法节省的时间是否可观。我强烈建议将它分成两个独立的部分,然后分别测试每个部分的准确性。让您的数据库应用程序来完成这项艰巨的工作。它对排序和返回数据进行了优化。好的,谢谢所有的答案。。我认为你是对的。。它的代码比我想象的要多,而且更复杂。。所以我把它放在两个不同的查询中,就完成了。谢谢