【发布时间】:2016-05-21 12:59:10
【问题描述】:
我需要从 2 个不同的查询中获取数据。我想将它们存储为 2 个单独的变量。
首先我尝试了这个:
// 1. Create a database connection
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME, DB_PORT);
if ($mysqli->connect_errno) {
echo "No connection" ;
}
// 2. first query
$query = "CALL sp1('2015-01-01', '2015-01-31');";
$result = $mysqli->query($query);
$var1 = array();
while($shop = $result->fetch_object()) {
$var1[] = $shop;
}
echo '<pre>', print_r($var1), '</pre>';
$result->free();
// 3. second query
$query = "CALL sp2('2015-01-01', '2015-01-31');";
$result = $mysqli->query($query);
$var2 = array();
while($shop = $result->fetch_object()) {
$var2[] = $shop;
}
echo '<pre>', print_r($var2), '</pre>';
我从第一个查询中获取数据,但是当 php 尝试获取第二个查询时,我收到了这个错误:
致命错误:在布尔值上调用成员函数 fetch_object()
我阅读了关于 multi_query 的信息,但找不到任何关于将查询的输出保存为单独变量的信息。
附加信息:即使我切换查询时,第二个查询总是不正确的。我不知道如何加载第二个查询以及前一个查询发生了什么(在我写时被删除:result->free?)
【问题讨论】:
-
我认为您的查询失败并返回
false到$result。在使用var_dump进行第二次查询后检查$result并确保您的查询正确运行 -
当使用 2+ 个不同的 sql 语句时,我只是嵌套 while 语句。
-
在第二个 $result 上应用 var_dump 后我得到了错误...但是为什么呢?
标签: php mysql sql mysqli-multi-query