【发布时间】:2012-03-11 14:22:26
【问题描述】:
我正在使用 PHP 和 MySQL。我将在下面提供一个简单的表格:
------------------------------------------------------
| id | text |
------------------------------------------------------
| 1 | The quick brown fox jumped over the lazy dog |
------------------------------------------------------
我希望用户能够使用以空格分隔的关键字进行搜索。我有一个简单的 SQL 查询,即SELECT * FROM table WHERE text LIKE %[$keyword]%,这意味着如果我搜索“The quick fox”,我不会得到任何结果。有没有办法用空格分隔关键字,所以如果我搜索“The quick fox”,它将运行 3 次搜索。一个用于“The”,一个用于“quick”,一个用于“fox” - 删除所有空格。虽然它应该只显示一个结果,因为它都属于同一行而不是 3 个,因为所有 3 个关键字都与该行中的数据匹配。
最好的方法是什么?总是欢迎所有能更好地做到这一点的建议。谢谢!
[编辑]
现在才想到,用逗号(,)分隔关键字会更好吗?
【问题讨论】:
-
您几乎肯定应该在生成查询的代码中处理这个问题,而不是在 MySQL 中。 (另请参阅en.wikipedia.org/wiki/SQL_injection.)
-
感谢@ruakh 的关注。不过,我确实有。我只是不想把所有东西都放在一边,因为我想让人们专注于我所要求的东西。但是,再次感谢。
-
好吧,但我坚持我的说法,你几乎肯定应该在生成查询的代码中处理这个问题,而不是在 MySQL 中。因此,为了获得最佳答案,您应该显示生成查询的代码。
-
是的,@ruakh。这将是最好的方法之一 - 正如我所要求的那样。 :)