我在实施fulltext()
搜索我的查询时遇到了一些困难。现在AGAINST()
段中的参数不会调用错误 - 除非它们包含在单引号中。
错误:PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
哪个有意义,因为它们不应该是文字,相反,它们应该是字符串,所以这些值不受约束,对吧?但是为了使这个查询起作用,AGAINST()
中的参数必须用单引号括起来。
MATCH(features) AGAINST(':feature_set :feature_unset')
$bind_array[":feature_set"] = $feature_set;
$bind_array[":feature_unset"] = $feature_unset;
$stmt = $conn->prepare($query);
$stmt->execute($bind_array);
:feature_set :feature_unset
会返回一个格式如下的字符串:
+ Softaculous -Free Domain -Site Builder -Fantastico
有没有人知道这方面的解决方案?非常感谢,谢谢!
答案 0 :(得分:2)
以这种方式试试
$query = '... MATCH(features) AGAINST(:against IN BOOLEAN MODE)';
$bind_array[":against"] = $feature_set . ' ' . $feature_unset;
$stmt = $conn->prepare($query);
$stmt->execute($bind_array);
这是 SQLFiddle 演示。