我正在更新之前管理员创建的网站。其中大部分是过时的PHP代码,但是有太多的变化,所以我正在使用我所拥有的。
我正在尝试按如下方式运行搜索查询;
$term = trim($_REQUEST['term']);
$searchterm = mysql_real_escape_string($term, $link); //link to db
$sql = "SELECT DISTINCT party_id
FROM vw_ft_search WHERE
MATCH (party_name)
AGAINST ('+$searchterm' IN BOOLEAN MODE)";
这总是会引发以下错误;
MySQL错误1210:AGAINST的参数不正确
我已阅读说明here,建议使用文字字符串(我认为我是?)。当我回显$searchterm
时,它会显示正确的搜索词(在这种情况下为'Charles')。
我还尝试使用如下输入的手动字符串运行查询,但结果相同;
$sql = "SELECT DISTINCT party_id
FROM vw_ft_search WHERE
MATCH (party_name)
AGAINST ('%Charles%' IN BOOLEAN MODE)";
它与查询,视图,变量有关吗?
任何方向都表示赞赏。 php / mysql的新手。
答案 0 :(得分:2)
$term = trim($_REQUEST['term']);
$searchterm = mysql_real_escape_string($term, $link); //link to db
如果您还希望与*
,Charlesk
等匹配,请添加Charlesd
$searchterm = $searchterm.'*';
$sql = "SELECT DISTINCT party_id
FROM vw_ft_search WHERE
MATCH (party_name)
AGAINST ('$searchterm' IN BOOLEAN MODE)";
并且要注意可以找到的停用词here。匹配停用词不会返回任何内容。