Foreach PHP循环到数组

时间:2014-02-17 04:22:21

标签: abstract-data-type

我正在尝试创建一个包含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的关联值?

3 个答案:

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