Jac*_*aug 0 php search codeigniter
我有一个搜索表单,供员工用来搜索用户帐户.我希望搜索表单从用户那里获取输入并在数据库中搜索与其匹配的用户.这是我的数据库结构......
用户表 - >(id,fname,lname,ip_address ....等)
以下是我在模型中使用的搜索用户...
$this->db->or_like('fname', $query);
$this->db->or_like('lname', $query);
$this->db->or_like('email', $query);
$this->db->or_where('ip_address', $query);
$query = $this->db->get('users');
Run Code Online (Sandbox Code Playgroud)
这适用于大多数搜索.例如....
搜索:比尔
返回所有用户名字或姓氏的用户.....
但是,即使有匹配的用户,搜索名字和姓氏也不会返回用户.例....
搜索:比尔盖茨
该搜索不会返回具有Bill的fname和盖茨的lname的用户.我能做些什么来完成这项工作?
您必须将搜索字词按到多个单独的术语中.CI将查询编写为:
WHERE fname LIKE '%Bill Gates%' OR lname LIKE '%Bill Gates%' etc...
Run Code Online (Sandbox Code Playgroud)
永远不会匹配,因为'bill gates'永远不会出现在数据库的单个字段中.但是如果你将它分成多个单词,(Bill
和Gates
)并将每个单词分别添加到or
集合中,你将获得匹配.
另一个选项,如果你正在使用MyISAM表,就是在3个字段中使用全文索引,即使bill是一个字段而gate就在另一个字段中,它们会找到'bill gates'.
显然,对InnoDB的全文支持现在实际上终于在开发流程中,但是现在它仍然只在生产代码中使用myisam.