Sphinx PDO执行错误中的多个变量

时间:2016-03-23 15:41:33

标签: php mysql pdo sphinx

  

未捕获PDOException:SQLSTATE [HY093]:参数号无效:绑定数   变量与令牌数量不匹配

当我尝试使用多个变量执行以下PDO查询时,我收到上述错误。

$array = $sphinx->prepare("select * from `indexname` where MATCH ('@name (:search)') AND
`price` BETWEEN :min AND :max");
$array->execute(array(':search' => $search, ':min' => $min, ':max' => $max));

如果我只使用:search并将:min and :max更改为$min and $max,则查询有效。

$array = $sphinx->prepare("select * from `indexname` where MATCH ('@name (:search)') AND `price` BETWEEN $min AND $max");
$array->execute(array(':search' => $search));

我可以在sphinx执行中只使用1个变量吗?

1 个答案:

答案 0 :(得分:1)

使用占位符,您可以绑定 a complete data literal only

因此,您必须首先在PHP中编译搜索模式,然后将其发送到查询:

$stmt = $sphinx->prepare("select * from `indexname` where MATCH (:search) AND
`price` BETWEEN :min AND :max");
$stmt->bindValue(':search', "@name ($search)");
$stmt->bindValue(':min', (int)$min, PDO::PARAM_INT);
$stmt->bindValue(':max', (int)$max, PDO::PARAM_INT);
$stmt->execute();