我已经尝试了多年,以我想要的方式完成这项工作,但我一直都在失败。
我有一个包含4列的表格。第二个(“itemname”)是应该搜索的那个。值包含特殊字符,如“/”和“(”。
工作部分:正在忽略特殊字符,右边的条目会匹配。
非工作部分:这是在很多其他比赛之间,我不需要。
我的查询:
$query = $pdo->prepare("SELECT itemname, itemprice, itemupdate, itemstat
FROM pricedata
WHERE MATCH itemname AGAINST ('%" . $search . "%' IN BOOLEAN MODE)
ORDER BY itemprice DESC LIMIT 15");
示例: 我需要找到一个价值为“M4A1-S / Hyper Beast(Factory New)”的物品。
搜索:“ M4A1-S Hyper ”
基本上:搜索栏中的每个字都应该用“AND”而不是“OR”来对待。
我自己试图找到解决方案,但我无法使其发挥作用。
提前多多感谢! :)
编辑:新建议的查询没有结果:
$query = $pdo->prepare("SELECT itemname, itemprice, itemupdate, itemstat
FROM pricedata
WHERE itemname REGEXP '%" . $search . "%'
ORDER BY itemprice DESC LIMIT 15");
答案 0 :(得分:0)
我认为你可以使用正则表达式
try this site to understand regex
' M4A1-S。+ Hyper' - 匹配两个单词' M4A1-S'成为第一个词 '超'是第二个
$query = $pdo->prepare("SELECT itemname, itemprice, itemupdate, itemstat
FROM pricedata
WHERE itemname REGEXP 'M4A1-S.+Hyper'
ORDER BY itemprice DESC LIMIT 15");
来源:check this