查询搜索字母到字母?

时间:2011-08-17 19:29:56

标签: php codeigniter search where

我正在根据搜索框中输入的字母提供的建议进行搜索。

示例:

  

我在数据库中有这样的字词: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获取建议?

1 个答案:

答案 0 :(得分:5)

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

E.g。

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

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

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

PS。在后面的刻度中包含列名称总是一个好主意,以避免与(可能)保留名称冲突,例如datetype

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