如何从对象Array中两次获取数据

时间:2017-10-03 11:16:19

标签: php arrays foreach

你好我有一个数组如下

Array
(
    [0] => stdClass Object
        (
            [id] => 49
            [count] => 1
            [product] => t shirts yellow
            [total] => 100
        )

    [1] => stdClass Object
        (
            [id] => 50
            [count] => 1
            [product] => t shirts red
            [total] => 100
        )

)

在此我希望所有数据都基于收到的ID。所以我使用foreach循环。 但在foreach循环中我只得到id。所以我使用以下来从数据库中获取所有数据。但它没有用

foreach($products as $product)
{
   $proid = $product->id;
   $getdata = $conn->query("select * from product where id = '$proid' ");
}

当我打印$ getdata->名称时,它显示我错误。

Undefined property: mysqli_result::$name

那么如何根据ID获取foreach循环中的所有数据。 感谢

2 个答案:

答案 0 :(得分:0)

::query返回的对象不是您假设的结果数组,而是mysqli_result对象。

为了获得实际返回的行,您需要这样做:

$row = $getData->fetchArray()

请注意,这将获取结果集中的下一行,如果返回多行,则需要将其放入循环中,例如:

while($row = $getData->fetchArray())
{
    // do something.
}

我会考虑你的方法。您正在为每个对象进行单独查询。这可能很昂贵,具体取决于阵列中有多少产品。创建id的数组并查询ID为IN的数组可能更有效。

IN query clause example

Docs: MysqliResult::fetchArray()

答案 1 :(得分:0)

非常简单

抱歉我忘了取数组

foreach($products as $product)
{
   $proid = $product->id;
   $getdata = $conn->query("select * from product where id = '$proid' ")->fetch_object();
}

现在它的工作。