将查询2的结果添加到查询1

时间:2011-04-29 14:44:39

标签: php arrays

我做了两个查询,我想将查询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转换为数组而不是记录集吗?

或者我可以在问题界面上使用不同的语法吗?

3 个答案:

答案 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;
}