我想在MySQL数据库上创建一个搜索查询,该查询将包含从用户键入的5个不同的字符串。我想用这些字符串查询5个不同的表列。
例如,当我有输入字段时,例如:
名,姓,地址,邮编,城市。
我应该如何查询并非总是获得所有行的数据库。
我的查询是这样的:
SELECT user_id, username
from users
where
a like %?% AND
b like %?% AND
c like %?% AND
d like %?% AND
e like %?%;
当我将AND换为OR时,我总是会得到所有有意义的结果,而当我使用AND时,我只会得到完全匹配的结果...
是否有任何函数或语句对我有帮助?
编辑
我使用的代码是:
$sql = "select users.user_id, first_name
from users
inner join user_normal_aos
on users.user_id = user_normal_aos.user_id
inner join normal_areas_of_expertise
on user_normal_aos.normal_areas_of_expertise_id = normal_areas_of_expertise.normal_areas_of_expertise_id
where
users.first_name like ? AND
users.kanzlei like ? AND
normal_areas_of_expertise.normal_aoe like ? AND
users.postcode like ? AND
users.city like ?";
$query = $this->db->query($sql,
array(
'%'.$lawyer_name.'%',
'%'.$kanzlei.'%',
'%'.$area_of_expertise.'%',
'%'.$post_code.'%',
'%'.$city.'%')
);
最佳答案
例如,使用PHP根据输入的字段来调整查询。
$where = array();
$replacements = array();
/* you can also compare if string is not null or not empty...
this is just example using isset */
if (isset($lawyer_name)) {
$where[] = 'users.first_name like ?';
$replacements[] = '%'.$lawyer_name.'%';
}
/* repeat this if again for all your fields .... */
$sql = "..... where ".implode(' AND ', $where);
$query = $this->db->query($sql,
$replacements
);
关于mysql - php codeigniter MySQL搜索查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17446264/