0

私のelseステートメントは、実行されるべきときに実行されません。コードにエラーはありません。それは単にクエリと foreach ステートメントの流れに関係していますが、これを理解できないようです。何か案は?

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

1 に答える 1

3

まず、レコードが 1 つしかない場合はクエリをループする意味がなく、LIMIT 1クエリ内のすべてのパラメーターを既にチェックしている間は if チェックの意味がないことをお勧めします。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'));
    }
于 2013-09-30T05:57:50.960 に答える