2014-02-17 182 views
0

我想创建一个包含SQL表结果的数组。但我的foreach循环似乎没有正确的功能。Foreach PHP循环到数组

这是我的代码: $ stmt-> bind_param(“i”,$ id); $ stmt-> execute(); ($ stmt-> fetch()){ } $ stmt-> close();

$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); 
    ) 
) 

这似乎是运行在for循环在我的打印语句,然后MySQL的语句,使用最后connected_items_id,这是为什么?为什么它不返回该ID的关联值?

回答

1

删除此[]在行号6:

while ($stmt->fetch()) { 
    $connected_items = array($connected_items_id); 
} 

取而代之:

while ($stmt->fetch()) { 
    $connected_items[] = array($connected_items_id); 
} 
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

尝试此,

"connected_item_id" => $connected_items[0], 

代替

"connected_item_id" => $connected_items_id,