【问题标题】:Mysql syntax for a search engines with names [duplicate]具有名称的搜索引擎的Mysql语法[重复]
【发布时间】:2013-02-24 15:06:55
【问题描述】:

我想用 php 做一个“搜索引擎”。我有两列。第一个是first_name,第二个是姓我使用这个sql语法:

SELECT * 
FROM users 
WHERE first_name OR last_name LIKE '$search_term%'

我希望 sql 同时搜索名字和姓氏,而没有一个包含 first_name 和 last_name 的列。请帮忙!!!!

【问题讨论】:

  • (还有许多其他问题,不知道这个确切的代码和问题出现的频率。试试our search function!)

标签: php mysql sql


【解决方案1】:

应该是

SELECT * 
FROM   users 
WHERE  first_name LIKE '$search_term%' AND 
       last_name LIKE '$search_term%'

但上面的查询执行全表扫描,因为它不使用索引。为了获得更好的性能,请搜索FULL TEXT SEARCH

作为旁注,如果变量的值(s)来自外部,则查询很容易受到SQL Injection 的攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

【讨论】:

  • 感谢工作人员!但是当我输入名字(有效)然后姓氏不起作用时
  • 并且不起作用意味着什么?您是否希望两个条件的搜索都为真?
  • 如果是这种情况,请使用 AND 而不是 OR 查看我的更新
  • 我认为我必须在我的语法 GROUP CONCAT 中使用它
  • 为什么GROUP_CONCAT 你的记录看起来怎么样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
相关资源
最近更新 更多