【问题标题】:query search letters to letters?查询搜索字母到字母?
【发布时间】:2011-08-17 19:29:55
【问题描述】:

我正在搜索基于在搜索框中输入的字母提供的建议。

示例:

我在数据库中有这个词:salam, salavat, sabos, sandal, sefid, siah and ...
我在搜索框中输入了:s --显示这个 话--> salam, salavat, sabos, sandal, sefid, siah
现在如果 输入:sa --显示这个词--> salam, salavat, sabos, sandal,
如果输入:sala --显示这个词--> salam, salavat
如果输入:salam --显示此字词--> salam

我正在使用 jQuery 事件 .keyup()(keyup 工作正常)并在后端使用 codeigniter(在 codeigniter 中查询不是我想要的)。

查看我的查询(在此查询中,$find 包含已输入的序列,我使用like 关键字在数据库中搜索):

$find = $this->input->post('find');
    $where  =   "date LIKE '$find' OR
            name LIKE '$find' OR 
            star LIKE '$find' OR
            address LIKE '$find' OR
            number_phone LIKE '$find' OR 
            type LIKE '$find' OR
            service LIKE '$find' OR
            units LIKE '$find' OR
            useradmin LIKE '$find'";

$query = $data['results'] = $this->db->query("SELECT @rownum:=@rownum+1 rownum, t.*
        FROM (
        SELECT *
        FROM my_table
        WHERE 
            $where
        ORDER BY id desc
        LIMIT $offset, $coun_page       
        ) t,
        (SELECT @rownum:=0) r");

以下查询有效,但由于rownum,我无法使用它:

$this->db->order_by("id", "desc")->like('name', $name)->get('my_table')

如何通过rownum 获得建议?

【问题讨论】:

    标签: php codeigniter search where


    【解决方案1】:

    要将子字符串与LIKE 查询匹配,您需要使用通配符,在SQL 中是百分比字符%。

    例如

    WHERE foo LIKE '%bar%' 将查找列foo 包含子字符串'bar' 的所有行。

    WHERE foo LIKE 'bar%' 将查找列foo 以子字符串'bar' 开头的所有行。

    WHERE foo LIKE '%bar' 将查找列foo 以子字符串'bar' 结尾的所有行。

    PS。最好在反引号中包含列名,以避免与(可能)保留名称发生冲突,例如 date 和 type。

    SELECT `column1`, `column2` FROM `table` WHERE `column3` = 'value'
    

    【讨论】:

    • 好的,坦克,现在如果有数据库词 nice car, nice, nice, nice car 并且我们搜索了词 nice:如何ORDER BY(列出)那些喜欢:nice, nice, nice car, nice car 或者如果搜索词nice car list like: nice car, nice car, nice, nice ?
    • 不要在一个问题中问多个问题。当您的原始问题以您满意的方式得到回答时,将其关闭(批准正确答案)并将后续问题作为新问题提出。
    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多