我正在开发使用PHP和Codeigniter构建的API,并将MySQL用作数据库。
我有一个名为Users的用户表,其中包含以下各列:
- ID - Firstname - Lastname - Email
用户如何使用全名搜索该表?例如,通过Martin或Smith进行搜索就可以了,但不能搜索Martin Smith。
这是我现在正在使用的查询:
$this->db->select('*'); $this->db->from('users'); $this->db->like('firstname', $args['query']); $this->db->or_like('lastname', $args['query']);
更新
如果我按照以下建议使用此查询,则找不到任何内容。不能使用全名,名字或姓氏。然后,名字和姓氏都必须是相同的单词。
$this->db->select('*'); $this->db->from('users'); $this->db->like('firstname', $args['query']); $this->db->like('lastname', $args['query']);
直奔我的脑袋,但是那又如何呢?
$input = 'Martin Smith'; $names = explode($input); $this->db->select('*'); $this->db->from('users'); $this->db->where_in('firstname', $names); $this->db->or_where_in('lastname', $names);
应该输出如下内容:
SELECT * FROM users WHERE firstname IN ('Martin', 'Smith') OR lastname IN ('Martin', 'Smith')