我用以下代码创建了简单的搜索页面:
$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初学者(甚至更少)的程序员,所以我将感谢任何额外的评论,包括从安全性的角度
发布于 2014-01-17 21:09:11
要找到确切的单词,你需要让这样的空间
$stmt = $pdo->query("SELECT `text` FROM `records`
WHERE `tags` LIKE '% $keywords %' OR `tags` LIKE '$keywords %' OR `tags` LIKE '% $keywords'");
^---------^---spaces here你会得到准确的词免费。
发布于 2014-01-17 21:04:50
我相信你需要
WHERE `tags` IN $keywords以$keywords作为implode(',', $keyArray),即格式的('free', 'busy', 'other')
注意有关SQL注入的警告,并查看Select from mysql table WHERE field='$array'?中的通用方法。
https://stackoverflow.com/questions/21195720
复制相似问题