你好我有一个数组如下
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循环中的所有数据。 感谢
答案 0 :(得分:0)
从::query
返回的对象不是您假设的结果数组,而是mysqli_result
对象。
为了获得实际返回的行,您需要这样做:
$row = $getData->fetchArray()
请注意,这将获取结果集中的下一行,如果返回多行,则需要将其放入循环中,例如:
while($row = $getData->fetchArray())
{
// do something.
}
我会考虑你的方法。您正在为每个对象进行单独查询。这可能很昂贵,具体取决于阵列中有多少产品。创建id的数组并查询ID为IN的数组可能更有效。
答案 1 :(得分:0)
非常简单
抱歉我忘了取数组
foreach($products as $product)
{
$proid = $product->id;
$getdata = $conn->query("select * from product where id = '$proid' ")->fetch_object();
}
现在它的工作。