Php Mysqli多查询-排序结果
我想将sql语句中的每个结果保存在不同的数组中。我试过: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 = "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;
}
虽然我必须同意评论,但这会给一对简单的请求增加很多工作量和额外的代码复杂性。为什么要同时执行多个查询?这似乎是不必要的复杂?因为它更快更容易概述;但这不是问题所在;无论如何,我怀疑用这种方法节省的时间是否可观。我强烈建议将它分成两个独立的部分,然后分别测试每个部分的准确性。让您的数据库应用程序来完成这项艰巨的工作。它对排序和返回数据进行了优化。好的,谢谢所有的答案。。我认为你是对的。。它的代码比我想象的要多,而且更复杂。。所以我把它放在两个不同的查询中,就完成了。谢谢