我使用$encodestr = base64_encode($str);
对字符串进行编码,并将此字符串存储在数据库中。现在我想使用MATCH(title) AGAINST('$title')
搜索此字符串,但我无法获得任何结果。我以自己编码的形式存储了许多项目标题。现在,如果用户想要搜索“有趣的产品”,那么我使用MATCH(title) AGAINST('$title')
进行搜索,它在编码之前工作,但在编码之后它不起作用。
任何人都可以帮助我如何使用PHP和MySQL从我自己编码的字符串中获得最相关的结果吗?
我使用过这个查询:
$titleTomatch = base64_encode($title);
$rel_query ="select v_id ,title,image_med_url,v_view, MATCH(title, des)
AGAINST('$titleTomatch') as score from v_data where MATCH(title,des)
AGAINST('$titleTomatch') or cat = '$cat' and block =0 and del =0 order by score desc limit 15";
答案 0 :(得分:0)
因此,当您将标题与存储在db中的所有编码标题进行匹配时,只需对您的标题进行编码,然后将其输入到sql中。
$titleToMatch = base64_encode($title);
然后使用MATCH(title ) AGAINST('$titleToMatch')
答案 1 :(得分:0)
不行。
FULLTEXT
索引将不对任何形式的加密/编码/ etc字符串起作用。 FULLTEXT
需要“看到”字词。
也就是说,你不能以任何方式使MATCH
通过base64_encode损坏字符串。
LIKE
或REGEXP
也不会起作用,至少不是所有时间。 (三分之一的时间位将正确对齐,而那些可能正常工作。)