0

我有一个带有复选框、输入字段的表单。用户可以选择或输入某些内容,并以此构建查询。Now when the user selects only one checkbox, the query works perfect, but when selecting 2 checkboxes, I get a count of zero in return. 这是查询返回的内容:

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 在数据库中(如果我单独选择它们,它可以工作)。

谢谢

4

1 回答 1

3

它应该OR代替AND. 如果两者都是 1 2 AND,则只会返回一些东西。如果是 1 或 event_id 是 2,则返回一些东西。event_idANDORevent_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
于 2013-10-21T22:19:20.587 回答