Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用MySQL在PHP上全文搜索_Php_Mysql_Pdo_Sql Like - Fatal编程技术网

如何用MySQL在PHP上全文搜索

如何用MySQL在PHP上全文搜索,php,mysql,pdo,sql-like,Php,Mysql,Pdo,Sql Like,我使用以下代码创建了简单搜索页面: $keywords = str_replace(' ','%',$_POST['keywords']); $stmt = $pdo->query("SELECT `text` FROM `records` WHERE `tags` LIKE '%$keywords%'"); 它可以工作,但如果数据库列“标签”有一个词,例如“自由职业者”,我输入了“自由”一词,我会得到结果,但我不应该这样做。它必须只搜索完整的单词。我尝试了全文搜索与匹配(文本)反对,但

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

$keywords = str_replace(' ','%',$_POST['keywords']);
$stmt = $pdo->query("SELECT `text` FROM `records` WHERE `tags` LIKE '%$keywords%'");
它可以工作,但如果数据库列“标签”有一个词,例如“自由职业者”,我输入了“自由”一词,我会得到结果,但我不应该这样做。它必须只搜索完整的单词。我尝试了全文搜索与匹配(文本)反对,但它不适合我,因为停止字

编辑:抱歉,我没有澄清:如果DB列中有“自由职业者web开发”等词,我输入了“自由职业者”或“web开发”或“自由职业者开发”[通过使用stru替换(“,%”),我得到了我需要的结果。但是,如果我输入“free”(即DB中的“no”一词),我应该不会得到任何结果,但我会再次获得成功结果

此外,我通过foreach对结果进行了回应。如果我用IN($array)更改代码,即使输入“freeloper”,也不会得到任何结果,可能是因为foreach

我只是HTML/CSS的程序员,也是PHP的初学者(甚至更少),因此我非常感谢您提供的任何其他评论,包括从安全角度提供的评论

WHERE `tags` IN $keywords
使用$keywords作为
内爆(',',$keyArray)
,即格式为
('free','busy','other')


请注意有关SQL注入的警告,并参阅常规方法,以找到您需要的确切单词,以便留出这样的空间

 $stmt = $pdo->query("SELECT `text` FROM `records` 
                      WHERE `tags` LIKE '% $keywords %' OR `tags` LIKE '$keywords %' OR `tags` LIKE '% $keywords'");
                                          ^---------^---spaces here

您将获得确切的免费信息。

不!您邀请人们在您的站点上使用sql注入!阅读PDO附带的文档,了解如何使用准备好的语句。仅仅使用PDO作为驱动程序是不够的!SQL注入面临风险!请阅读示例6。如果单词位于字段的开头或结尾,或者位于任何标点符号的旁边,或者字段是特定的搜索词(不带空格),则不会返回该单词。@RadGH此编辑应该会得到所有单词,但还需要一个:)
或“tags`='$keywords'
不,最后一个错误。您将获得附加到其他单词的单词,如him@echo_Me非常感谢。这正是我需要的!