首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用MySQL全文检索PHP

如何用MySQL全文检索PHP
EN

Stack Overflow用户
提问于 2014-01-17 20:57:38
回答 2查看 1.3K关注 0票数 0

我用以下代码创建了简单的搜索页面:

代码语言:javascript
复制
$keywords = str_replace(' ','%',$_POST['keywords']);
$stmt = $pdo->query("SELECT `text` FROM `records` WHERE `tags` LIKE '%$keywords%'");

这是可行的,但如果DB列“标记”有“自由职业者”这个词,而我输入了“免费”这个词,我就会得到结果,但我不应该。它只能用完整的文字来搜索。我试过全文搜索和匹配(文本)反对,但它不适合我,因为断句

编辑:对不起,我没有澄清:如果DB列有“自由网页开发”,我输入了“自由职业者”或“网络开发”或“自由职业发展”,使用str_replace(‘','%')我得到了我所需要的结果。但是,如果我输入"free“(即DB中的单词no ),我应该不会得到任何结果,但我会再次获得成功的结果。

此外,我还通过预测来响应结果。如果我用IN ($array)修改了我的代码,即使我输入了“自由职业者”,也没有结果,这可能是因为

我只是HTML/CSS和PHP初学者(甚至更少)的程序员,所以我将感谢任何额外的评论,包括从安全性的角度

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-17 21:09:11

要找到确切的单词,你需要让这样的空间

代码语言:javascript
复制
 $stmt = $pdo->query("SELECT `text` FROM `records` 
                      WHERE `tags` LIKE '% $keywords %' OR `tags` LIKE '$keywords %' OR `tags` LIKE '% $keywords'");
                                          ^---------^---spaces here

你会得到准确的词免费。

票数 0
EN

Stack Overflow用户

发布于 2014-01-17 21:04:50

我相信你需要

代码语言:javascript
复制
WHERE `tags` IN $keywords

以$keywords作为implode(',', $keyArray),即格式的('free', 'busy', 'other')

注意有关SQL注入的警告,并查看Select from mysql table WHERE field='$array'?中的通用方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21195720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档