2014-10-20 59 views
-1

我正在練習PHP,試圖學習這些細節。這樣做,我正在一個小網上商店工作。其中一個特點是在登錄後檢索購物車。這是可行的,但不知何故,在數組訂單中出現一個索引爲「」的項目。我不知道它是如何到達那裏的,或者如何(如果我不能防止這種情況發生的話)將它從陣列中移除...我試圖將其取消,但這沒有任何效果。這是創建$ _SESSION [「Bestellen」]數組的代碼:數據庫檢索後帶索引「」的數組

 $query = "SELECT * FROM orders WHERE user_id = ".$_SESSION['user_id']; 
     $result = mysqli_query($db, $query); 
     while ($row = mysqli_fetch_assoc($result)){ 
      foreach($row as $key => $value){ 
       $order[$key] = $value;     

       $_SESSION['Bestellen'][$order['product_id']]['aantal'] = $order['ammount']; 
       $_SESSION['Bestellen'][$order['product_id']]['product_id'] = $order['product_id']; 
      }      

      $query = "SELECT product_name, price FROM products WHERE product_id = ".$order['product_id']; 
      $result2 = mysqli_query($db, $query); 
      while ($row2 = mysqli_fetch_assoc($result2)){ 
       foreach($row2 as $key2 => $value2){ 
        $item[$key2] = $value2; 

        $_SESSION['Bestellen'][$order['product_id']]['product_name'] = $item['product_name']; 
        $_SESSION['Bestellen'][$order['product_id']]['price'] = $item['price']; 

       } 
      } 
     } 

我在數據庫中具有有序的兩個項目,但陣列結束有(首先在陣列)的第三項,而沒有任何值和索引爲「」:

array(3) { 
    [""]=> 
    array(2) { 
    ["aantal"]=> 
    NULL 
    ["product_id"]=> 
    NULL 
    } 
    [1]=> 
    array(4) { 
    ["aantal"]=> 
    string(2) "10" 
    ["product_id"]=> 
    string(1) "1" 
    ["product_name"]=> 
    string(6) "boutje" 
    ["price"]=> 
    string(4) "0.32" 
    } 
    [3]=> 
    array(4) { 
    ["aantal"]=> 
    string(1) "7" 
    ["product_id"]=> 
    string(1) "3" 
    ["product_name"]=> 
    string(7) "schroef" 
    ["price"]=> 
    string(4) "0.15" 
    } 
} 

它是如何到達那裏的?我如何防止這種情況發生?

回答

1

看起來像$order['product_id']缺失或爲空。檢查您的數據庫以確保行product_id存在並且不爲空。

.... 這可能僅僅是因爲它不通過的結果存在 ..

 foreach($row as $key => $value){ 
      $order[$key] = $value;     
     } 
     $_SESSION['Bestellen'][$order['product_id']]['aantal'] = $order['ammount']; 
     $_SESSION['Bestellen'][$order['product_id']]['product_id'] = $order['product_id']; 

循環,並試圖使用這些變量在會話之前設置$順序排列。

此外,請務必先初始化$順序排列,或者你可以得到一個未設置可變通知..

$order = []; //somewhere above your loop 
+0

Ofcourse!這就解釋了!我只是不得不把它從foreach循環中取出來。那就是訣竅。謝謝! – Vlegel 2014-10-20 15:50:35