2013-09-30 123 views
0

我的else語句沒有在執行時得到執行。代碼中沒有錯誤。它只是與我的查詢和foreach語句的流程有關,但我似乎無法弄清楚這一點。有任何想法嗎?PHP else語句沒有執行

$id = $this->input->post('id'); 
$session_id = $this->input->post('session_id'); 
$q1 = $this->db->query("SELECT * 
    FROM default_cart 
    WHERE cookie_id = '$session_id' 
    AND product_id = '$id' LIMIT 1"); 

foreach($q1->result() as $row) { 
    if($row->cookie_id != $session_id && $row->product_id != $id) { 
     echo json_encode(array('error_code' => 'e100')); 
    } else { 
     $data = array('product_id' => $id, 
      'active' => 'Yes', 
      'cookie_id' => $session_id 
     ); 
     $this->db->insert('default_cart', $data); 
     echo json_encode(array('success' => true)); 
    } 
} 
+0

您需要測試/輸出您正在查詢的變量以及從查詢中獲得的結果,以找出與您設置的條件不匹配的原因。 – Lapidouce

+1

你的循環很奇怪。您只顯式查詢匹配'cookie_id = $ session_id'和'product_id = $ id'的數據集,但您希望數據庫返回其他內容,所以您看到需要再次檢查if。爲什麼? – Sven

回答

3

首先,我想表明,沒有通過查詢循環的感覺,當只有一個記錄LIMIT 1沒有,如果檢查的意義,而你已經檢查的所有參數查詢WHERE cookie_id = '$session_id' AND product_id = '$id'只是獲取查詢返回的行並檢查是否爲空。

$id = $this->input->post('id'); 
    $session_id = $this->input->post('session_id'); 
    $q1 = $this->db->query("SELECT * FROM default_cart 
    WHERE cookie_id = '$session_id' AND product_id = '$id' LIMIT 1"); 
    $row=$q1->row(); 
    if(!empty($row)) {   
      $data = array('product_id' => $id, 
          'active' => 'Yes', 
          'cookie_id' => $session_id); 
      $this->db->insert('default_cart', $data); 
      echo json_encode(array('success' => true)); 

    }else{ 
    echo json_encode(array('error_code' => 'e100')); 
    }