admin

搜索全名,而不只是名字或姓氏

sql

我正在开发使用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']);

阅读 259

收藏
2021-06-07

共1个答案

admin

直奔我的脑袋,但是那又如何呢?

$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')
2021-06-07