我正在尝试创建一个包含SQL表结果的数组。但是我的foreach循环似乎没有正常运行。
这是我的代码: $ stmt-> bind_param(“i”,$ id); $ stmt->执行(); while($ stmt-> fetch()){ } $ stmt->关闭();
$i = 0;
foreach ($connected_items as &$value) {
print_r ($connected_items[$i]);
$stmt->bind_param("i", $connected_items[$i]);
$stmt->execute();
while ($stmt->fetch()) {
$result[] = array(,
);
}
$stmt->close();
$i++;
}
unset($value);
)
)
它似乎是在我的print语句上运行for循环,然后是MySQL语句,使用最后的connected_items_id,为什么会这样?为什么不返回该id的关联值?
答案 0 :(得分:1)
尝试
foreach ($connected_items as $value) {
......................
......................
$stmt = $this->db->prepare('SELECT name, serial FROM `glpi_monitors` WHERE id =?');
$stmt->bind_param("i", $value[0]);
................................
................................
}
此外,您可以使用IN
关键字,而不是每次循环和查询。
$sql = "SELECT name, serial FROM `glpi_monitors` WHERE id IN('".implode("','",$connected_items)."'");
$stmt = $this->db->prepare($sql);
例如:
答案 1 :(得分:1)
试试这个,
"connected_item_id" => $connected_items[0],
而不是
"connected_item_id" => $connected_items_id,
答案 2 :(得分:1)
在第6行删除此[]:
while ($stmt->fetch()) {
$connected_items = array($connected_items_id);
}
而不是:
while ($stmt->fetch()) {
$connected_items[] = array($connected_items_id);
}