2015-09-03 31 views
1

我有一个查询,我只想使用where条件如果参数不为空或空字符串。只能使用条件如果字符串参数不为空或空字符串

select 
users.user_id, 
users.fname, 
users.lname, 
Certifications.certName, 
skills.skillName 
from users 
left join Certifications on users.user_id = Certifications.user_id 
left join specializations on users.user_id = specializations.user_id 
left join skills on skills.user_id = skills.user_id 
where 
(Certifications.certName is not null and Certifications.certName like 'CCNA Routing and Switching') or 
(skills.skillName is not null and skills.skillName like '') or 
(users.location is not null and users.location like '') 
group by users.user_id 

所以如果skillNamelocation搜索词是空的,我不希望包括那些where子句。

+0

这些搜索词来自哪里?你如何生成这个查询? –

+1

也许你可以尝试类似'($ searchTerm!=''AND skills.skillName''searchTerm')''? –

+0

我有一个jQuery的方法,将json数据传递给实际调用查询到数据库的php文件。 –

回答

1

只能与不为空的参数

$whereClauses = array(); 
if (!empty($certifications)) { 
    $whereClauses[] = 'Certifications.certName like ?'; 
} 
if (!empty($skillName)) { 
    $whereClauses[] = 'skills.skillName like ?'; 
} 
if (!empty($location)) { 
    $whereClauses[] = 'users.location like ?'; 
} 
$query .= implode(' OR ', $whereClauses); 

然后,当然,你需要绑定相应的参数给您必须构建查询?字符

2

你知道这在前端。相应地调整。