This question already has answers here:
Search for “whole word match” in MySQL
(6个答案)
6年前关闭。
我使用以下代码创建了简单的搜索页面:
它可以工作,但是如果DB列“ tags”具有例如“ freelance”一词,而我输入了“ free”一词,则会得到结果,但我不会。它只能按完整词搜索。我曾尝试使用MATCH(text)AGAINST进行全文搜索,但由于停用词,它不适合我
编辑:对不起,我没有弄清楚:如果DB列中有单词“ freelance web development”,我输入了“ freelance”或“ web development”或“ freelance development” [通过使用str_replace('','%' )]我得到所需的结果。但是,如果我输入“免费”(即数据库中的单词“ no”),我将不会获得任何结果,但会再次获得成功的结果。
此外,我通过foreach回应了结果。如果我用IN($ array)更改了代码,即使我输入了“自由职业者”,也没有任何结果,可能是因为foreach
我仅是HTML / CSS和PHP初学者(甚至更少)的编码人员,所以我将感谢您提供任何其他意见,包括从安全角度出发
您将获得准确的免费单词。
(6个答案)
6年前关闭。
我使用以下代码创建了简单的搜索页面:
$keywords = str_replace(' ','%',$_POST['keywords']);
$stmt = $pdo->query("SELECT `text` FROM `records` WHERE `tags` LIKE '%$keywords%'");
它可以工作,但是如果DB列“ tags”具有例如“ freelance”一词,而我输入了“ free”一词,则会得到结果,但我不会。它只能按完整词搜索。我曾尝试使用MATCH(text)AGAINST进行全文搜索,但由于停用词,它不适合我
编辑:对不起,我没有弄清楚:如果DB列中有单词“ freelance web development”,我输入了“ freelance”或“ web development”或“ freelance development” [通过使用str_replace('','%' )]我得到所需的结果。但是,如果我输入“免费”(即数据库中的单词“ no”),我将不会获得任何结果,但会再次获得成功的结果。
此外,我通过foreach回应了结果。如果我用IN($ array)更改了代码,即使我输入了“自由职业者”,也没有任何结果,可能是因为foreach
我仅是HTML / CSS和PHP初学者(甚至更少)的编码人员,所以我将感谢您提供任何其他意见,包括从安全角度出发
最佳答案
要找到确切的单词,您需要给这样一个空格
$stmt = $pdo->query("SELECT `text` FROM `records`
WHERE `tags` LIKE '% $keywords %' OR `tags` LIKE '$keywords %' OR `tags` LIKE '% $keywords'");
^---------^---spaces here
您将获得准确的免费单词。
09-30 17:11