我正在进行mysql搜索,其中也可以搜索用户名。
这是我的PHP(MySQL)代码:
SELECT * FROM feed_info WHERE ( first_name LIKE '%$search_content%' OR last_name LIKE '%$search_content%' OR email_id LIKE '%$search_content%' OR feed_area LIKE '%$search_content%' OR feed_date LIKE '%$search_content%')
但是,当我尝试搜索first name
和last name
两者时,例如 John Dalton ,它没有显示任何结果。我可以找到我只搜索first name
或 last name
的问题。但无法找到添加这两列的方法。
所以,我想要一种可以搜索first name
和 last name
的方法。
当有人搜索 John Dalton 时,它应显示结果
答案 0 :(得分:1)
WHERE CONCAT(first_name,' ',last_name) LIKE '%$search_content%'
即;
WHERE CONCAT(first_name,' ',last_name) LIKE 'John Dalton'
这有用吗?
答案 1 :(得分:0)
这样的事情应该使用全文索引,使用MyIsam表
ALTER TABLE feed_info ADD FULLTEXT(first_name, last_name);
SELECT * FROM feed_info WHERE MATCH(first_name, last_name) AGAINST('John Dalton');
答案 2 :(得分:0)
前面的一小步是添加案例,其中要求姓名和姓氏:
SELECT *
FROM feed_info
WHERE ( first_name LIKE '%$search_content%'
OR last_name LIKE '%$search_content%'
OR email_id LIKE '%$search_content%'
OR feed_area LIKE '%$search_content%'
OR feed_date LIKE '%$search_content%'
OR LOWER(first_name) + ' ' + LOWER(last_name) = LOWER('$search_content') )
这就是我想你要求的。但是你仍然无法搜索姓氏和电子邮件。
答案 3 :(得分:0)
尝试此查询!
$sql="SELECT * FROM feed_info where
MATCH (
first_name,last_name,email_id,feed_area,feed_date
)
AGAINST ('$search_content' IN BOOLEAN MODE)";
此查询用于mysql全文搜索。
如果此查询不起作用,请将表引擎更改为InnoDB 在Phpmyadmin中写下这个命令!
ALTER TABLE feed_info ENGINE=InnoDB;