Php PDO:为MATCH()查询包装在单引号中的绑定值

Php PDO:为MATCH()查询包装在单引号中的绑定值,php,mysql,database,binding,pdo,Php,Mysql,Database,Binding,Pdo,我在执行fulltext()搜索查询时遇到一些困难。现在,anther()段中的参数不会调用错误,除非它们用单引号括起来 错误:PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配 这很有意义,因为它们不应该是文本,而应该是字符串,所以值不会被绑定,对吗?但是,为了使此查询发挥作用,中的参数必须用单引号括起来 MATCH(features) AGAINST(':feature_set :feature_unset') $

我在执行
fulltext()
搜索查询时遇到一些困难。现在,
anther()
段中的参数不会调用错误,除非它们用单引号括起来

错误
PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配

这很有意义,因为它们不应该是文本,而应该是字符串,所以值不会被绑定,对吗?但是,为了使此查询发挥作用,
中的参数必须用单引号括起来

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);

:功能设置:功能取消设置

将返回如下格式的字符串:

+Softaculous-免费域-站点生成器-Fantastico

有人知道这个问题的解决方案吗?非常感谢,谢谢

这样试试看

$query=”。。。将(特征)与(:在布尔模式下与)匹配);
$bind_array[“:对“]=$feature_set.”$未设置的特征;
$stmt=$conn->prepare($query);
$stmt->execute($bind_数组);

这是演示。

您好,谢谢您的回答。我无法实现这一点,因为除了
match()
一个参数外,查询还有许多其他参数,而且当满足每个条件时,
$bind\u数组也会慢慢建立起来。请你解释一下你的答案,以及为什么它会起作用,它可以解决这个问题。再次感谢:)
反对
除了唯一的字符串表达式。因此,必须有一个绑定参数,并且不应在占位符周围使用引号。请参阅更新的答案。谢谢,这是一种享受。作为参考,我想我应该补充一点,我也找到了另一个解决方案。解决方案是将单引号连接到变量本身。总体而言,@peterm的回答提供了一个更清晰的解决方案,所以我同意了。另外,Peter,你的回答是否可以推断,在
反()中的
变量中附加布尔模式的
不是必需的?不客气。使
处于布尔模式
只是查询的一部分。请参阅更新的答案。您还可以在我提供的具有等效sql代码的SQLFIDLE中看到这一点。