我有一个带有复选框,输入字段的表单。用户可以选择或输入某些内容,并且正在构建查询。现在,当用户只选择一个复选框时,查询工作正常,但是当选择2个复选框时,我得到的计数为零。 这是查询返回的内容:
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 :(得分:3)
应该是OR
而不是AND
。
如果AND
均为1 event_id
,则AND
只会返回一些内容。OR
如果event_id
为1或者event_id为2则会返回一些内容。
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