PDO:绑定值包含在单引号中用于MATCH()查询

时间:2014-02-16 03:14:25

标签: php mysql database binding pdo

我在实施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

有没有人知道这方面的解决方案?非常感谢,谢谢!

1 个答案:

答案 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 演示。