2015-05-27 3 views
0

Я хочу, чтобы все результаты моей базы данных в одном массивеPDO ForEach Loop в массиве (PHP)

моя функция:

function GetWinkelProduct($g_Winkel) { 
    global $g_Conn; 

    $l_Stmt = $g_Conn->prepare("SELECT pd_id FROM `producten_:Winkel`"); 
    $l_Stmt->bindValue(':Winkel', $g_Winkel, PDO::PARAM_INT); 
    $l_Stmt->execute(); 


    $l_qurries = new dbquery(); 
    $l_LastProduct = $l_qurries->GetLastProduct($g_Winkel); 

    while($l_Row = $l_Stmt->fetch(PDO::FETCH_ASSOC)){ 
     $out = array(); 

     foreach($l_Row as $product){ 
      $out[] = $product['pd_id']; 
     } 
    } 
     return $out;   
} 

другая страница: <?php print_r($l_qurries->GetWinkelProduct($g_Winkel)); ?>

только я получаю первый я получаю только последний результат.

+0

Отсутствие цикла foreach внутри цикла while – Saty

+0

Вы инициализировали массив внутри цикла while. – javabrett

+0

@saty thanx! он работает сейчас. – Erwin

ответ

2

Попробуйте это ...

Изменение выборки для fetchAll в то время как петли и rénové Foreach внутри во время цикла

function GetWinkelProduct($g_Winkel) { 
    global $g_Conn; 

    $l_Stmt = $g_Conn->prepare("SELECT pd_id FROM `producten_:Winkel`"); 
    $l_Stmt->bindValue(':Winkel', $g_Winkel, PDO::PARAM_INT); 
    $l_Stmt->execute(); 


    $l_qurries = new dbquery(); 
    $l_LastProduct = $l_qurries->GetLastProduct($g_Winkel); 

    while($l_Row = $l_Stmt->fetchAll(PDO::FETCH_ASSOC)){ 
     $out = array(); 


      $out[] = $l_Row ['pd_id']; 

    } 
     return $out;   
} 

исх: http://php.net/manual/en/pdostatement.fetchall.php

0

Вы должны инициализировать массив за пределами цикла в то время как и вам не нужен foreach.

Таким образом, вы создаете новый массив каждый раз, когда выполняется итерация, таким образом вы в конечном итоге заменяете массив.

$out = array();  
    while($l_Row = $l_Stmt->fetchAll(PDO::FETCH_ASSOC)){ 
      $out[] = $l_Row['pd_id']; 
    } 
    return $out;