php - 多个关键字搜索脚本需要一些专家输入

标签 php mysql search keyword

我一直在根据本教程编写关键字搜索脚本: http://www.hackosis.com/2007/11/06/howto-simple-search-engine-with-php-and-mysql/

就像提到的一些评论者一样,脚本最终只会根据搜索词中的最后一个词返回结果。所以我也尝试实现另一个用户的建议之一,但现在我似乎只能根据第一个搜索词获得结果。

我的脚本代码可以在这里找到:http://php.pastebin.com/m7759afd3

我的 print_r 结果如下所示:

SELECT * FROM blog WHERE blog_title LIKE '%barry%' OR blog_content LIKE '%barry%' AND blog_title LIKE '%child%' OR blog_content LIKE '%child%' AND blog_title LIKE '%help%' OR blog_content LIKE '%help%' ORDER BY blog_title

SELECT * FROM links WHERE link_title LIKE '%barry%' OR link_desc LIKE '%barry%' AND link_title LIKE '%child%' OR link_desc LIKE '%child%' AND link_title LIKE '%help%' OR link_desc LIKE '%help%' ORDER BY link_title

SELECT * FROM pages WHERE page_title LIKE '%barry%' OR page_content LIKE '%barry%' AND page_title LIKE '%child%' OR page_content LIKE '%child%' AND page_title LIKE '%help%' OR page_content LIKE '%help%' ORDER BY page_title

感谢您提供的任何帮助。

最佳答案

如果您想返回包含任何关键字的结果,请将所有AND替换为OR

如果您这样做,那么您的数据库将检查表的任何列中是否存在任何关键字。

因此,您的最终查询将由数据库服务器像这样读取:

SELECT * FROM blog WHERE blog_title LIKE '%barry%' OR blog_content LIKE '%barry%' OR blog_title LIKE '%child%' OR blog_content LIKE '%child%' OR blog_title LIKE '%help%' OR blog_content LIKE '%help%' ORDER BY blog_title

并且应该返回在任何列 (blog_title, blog_content) 中包含关键字(barry、child、help)的所有记录。

希望这对您有所帮助。

关于php - 多个关键字搜索脚本需要一些专家输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/293743/

相关文章:

php - 如何在 css 中使用 {{$variable}},Laravel 5.1

php - php 获取浏览量

jquery - 在单词搜索拼图中将单词放置在表格网格中?

java - 根据内部字段在 TreeSet 中查找对象的最佳方法是什么?

php - xampp 开发 : creating project(folders and files) in htdocs folder

php - PDO : creating a reusable code

mysql - 查找邮政编码指定距离内的所有邮政编码

mysql - Doctrine/Symfony "translates"空串变成NULL

mysql - 如何加快mysql搜索速度

php - MySQLi 从 table1 查询并将详细信息更新到 table2