2014-02-17 4 views
0

Я пытаюсь создать массив, содержащий результаты из таблицы SQL. Но мой цикл foreach не работает правильно.Foreach PHP Loop in Array

Это мой код: $ stmt-> bind_param ("i", $ id); $ stmt-> execute(); while ($ 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); 
    ) 
) 

Это, кажется, работает для цикла на моем операторе печати, а затем заявление 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,