我想在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/

10-09 21:05