我做了两个查询,我想将查询2中的行添加到查询1.另外,假设getResult1()没有返回名为“item2”的列
$result1 = getResult1();
$result2 = getResult2();
foreach ($result2 as $res)
{
$data = array();
$data['item1'] = $res->item1;
$data['item2'] = $res->item2;
$result1[] = $data;
}
我在这里遇到的错误是在线
$result1[] = $data
并读取
Fatal error: Cannot use object of type mysqli_result as array
我想我得到了正在发生的事情,但我不太确定如何解决它。行最终会转换为JSON,我可以使用数组数组来实现。
我通过将$ result1转换为数组数组来解决问题。我这样做是使用while循环和fetch_array()调用,但是有一种快速方法可以将$ result1转换为数组而不是记录集吗?
或者我可以在问题界面上使用不同的语法吗?
答案 0 :(得分:1)
a)不,没有内置方法可以将结果作为数组数组检索。
b)为什么不直接将$result2
检索为关联数组?为什么将它们作为对象,然后将它们复制到数组中?这实在是效率低下。或者,如果您更喜欢对象,请将$result1
存储为对象数组,而不是数组数组。
c)如果您正在运行两个单独的查询,因为其中一个查询不会检索某个列,则外部联接可能会为您节省所有这些麻烦。像这样:
SELECT table1.item1, table2.item2
FROM table1 LEFT JOIN table2
ON table1.foreign_key = table2.id
答案 1 :(得分:0)
追加查询? (http://dev.mysql.com/doc/refman/5.5/en/insert.html)
insert into `destinationRecordset`
select `foo` as `frazzle`, `bar` as `barizzle`, `baz` as `bazzizzle`
from `sourceRecordset`where `foo` like `mu`
答案 2 :(得分:0)
问题是你的result1
变量不是数组,它是一个对象,所以你不能使用ArrayAccess []
设置数据,你可以执行以下操作:
$result1 = getResult1();
$result2 = getResult2();
foreach ($result2 as $res)
{
$result2->item1 = $result1->item1;
$result2->item2 = $result1->item2;
}