当我发现它没有按照我想要的方式搜索时,我刚刚完成了用户系统的搜索功能。
如果我有一个包含 2 列的数据库表,分别称为“fname”和“lname”。
在一行中,“fname”的值为“Ashley”,“lname”的值为“Staggs”。
我可以搜索“Ashley”或“Staggs”,我会得到正确的结果,但如果我搜索“Ashley Staggs”,则不会显示任何结果。
我该如何正确执行此操作?
我的 SELECT 查询如下:
SELECT * FROM `users` WHERE fname LIKE '%" . protect($_GET['s']) . "%' OR lname LIKE '%" . protect($_GET['s']) . "%'
我知道会发生这样的事情,但这次我想不通。
谢谢, 阿什莉
最佳答案
“Ashley Staggs”既不在 fname 中,也不在 lname 中,因此您的请求不会返回任何内容。您可以尝试连接您的 MySQL 字段:
SELECT * FROM `users` WHERE fname LIKE '%" . $_GET['s'] . "%' OR lname LIKE '%" . $_GET['s'] . "%' OR CONCAT(fname, ' ', lname) LIKE '%" . $_GET['s'] . "%'
[编辑] 更好:
SELECT * FROM `users`
WHERE REPLACE(CONCAT(fname, lname, fname), ' ', '')
LIKE '%" . str_replace(' ', '', protect($_GET['s'])) . "%'
关于PHP MySQL 搜索组合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10182027/