2013-10-21 5 views
0

나는 입력란에 체크 박스가있는 폼이있다. 사용자는 무언가를 선택하거나 입력 할 수 있으며 쿼리가 작성되고 있습니다. 이제 사용자가 하나의 체크 박스 만 선택하면 쿼리가 완벽하게 작동하지만 2 개의 체크 박스를 선택하면 그 대가로 0이됩니다. 이 쿼리가 반환하는 것입니다 :php mysql 사용자 입력에서 동적 선택 쿼리

SELECT nbs_contact_events.contact_id, nbs_contacts.nbs_contact_id, nbs_contacts.nbs_contact_sur 
FROM nbs_contacts 
LEFT JOIN nbs_contact_events ON nbs_contact_events.contact_id = nbs_contacts.nbs_contact_id 
WHERE nbs_contact_events.event_id = 1 
    AND nbs_contact_events.event_id = 21 

반환 수 : 0 해당 선택을 만들기위한 PHP (PDO) 코드로 다음에

:

$this->pdo = $this->connectMySql(); 
     $query = "SELECT nbs_contact_events.contact_id, nbs_contacts.nbs_contact_id, nbs_contacts.nbs_contact_sur 
         FROM 
         nbs_contacts 
         LEFT JOIN 
         nbs_contact_events 
         ON 
         nbs_contact_events.contact_id = nbs_contacts.nbs_contact_id"; 
     if(isset($eventlist) || isset($nbslist) || isset($nbs_relativeto)){ 
      $query .= " WHERE "; 

      if(isset($eventlist)){     
       $source = array_filter($eventlist); 
       $conditions = array(); 
       foreach($source as $field => $value){ 

        $conditions[] = "nbs_contact_events.event_id = " . mysql_real_escape_string($value); 

        //$conditions[] = "event_id = :event_id"; 
       } 
       $where = implode(" AND ", $conditions); 
       $query .= $where; 
      } 
     } 
     $stmt = $this->pdo->prepare($query); 
     print_r($query); 
     if(!$stmt->execute($conditions)){ 
      return false; 
     } 

     $nart = $stmt->rowCount(); 
     echo "returned count: " . $nart; 
     if ($nart == 0) { 
      return false; 
     } 

쿼리에 어떤 문제가 왜 아무것도 돌려주지 않니? 나는 ID 1과 21이 데이터베이스에 있다는 것을 안다. (내가 따로 따로 선택하면 작동한다.)

감사

+0

2. 내 대답이 문제에 도움이나요 인 경우 event_id 모두 1 개 반환 뭔가 있다면 AND은 뭔가를 반환? –

+0

예,하지만 그랬습니까? 그들 사이의 차이점은 무엇입니까? – PDOProgrammer

+0

작은 답변으로 내 대답을 편집했습니다. 도움이되었다고 생각한다면, 그것을 수락 한 것으로 표시하는 것을 잊지 마십시오. –

답변

3

OR 대신 AND해야한다. event_id 1 또는 EVENT_ID이

select nbs_contact_events.contact_id, 
    nbs_contacts.nbs_contact_id, 
    nbs_contacts.nbs_contact_sur 
from nbs_contacts 
left join nbs_contact_events 
    on nbs_contact_events.contact_id = nbs_contacts.nbs_contact_id 
where nbs_contact_events.event_id = 1 
    or nbs_contact_events.event_id = 21