PHP MySQL 搜索组合列

标签 php mysql search sql-like

当我发现它没有按照我想要的方式搜索时,我刚刚完成了用户系统的搜索功能。

如果我有一个包含 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/

相关文章:

php mysqli_query 连接来自其他 php 文件的链接

php - Docker:PhpMyAdmin的上传限制为2048KiB

php - 尝试在PHP扩展中写一个内部函数,结果报内存泄漏,找了半天也没找到原因

java - 使用 hibernate 插入多行非常慢

java - 一种在字母数组中搜索单词的算法

javascript - Angularjs:名称以 ! 开头时搜索过滤器不起作用(感叹号)

php - Yii:自定义错误处理转发

MYSQL Workbench 导出将无法在 mysql (Ubuntu) 中正确获取源代码

php - 如何从表中输出一行并将所有行数据插入到选项标签中

search - 在ElasticSearch中找到日期差