PDO:参数号无效:绑定变量数与令牌数不匹配

时间:2018-01-29 22:19:24

标签: mysql pdo parameters

我无法弄清楚为什么我得到 SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配错误消息,代码如下:

$myArr = array(283908,283951,284024,284064,284076,284099);
$num = count($myArr);

$req = "select * from MyTable where Id in (?,?,?,?,?,?) limit ?,?";

$start = 0;
$limit = 3;

try {
   $sql = $pdo->prepare($req);
   $sql->bindParam($num+1, $start, PDO::PARAM_INT);
   $sql->bindParam($num+2, $limit, PDO::PARAM_INT);
   $sql->execute($myArr);
}
catch(PDOException $e) {
   pdo_error($e->getMessage());
}

前6个问题标记与myArr内容绑定,最后2个问题标记与限制绑定。这只是一个例子,在现实生活中,myArr可以包含100多个值,其大小不固定。

1 个答案:

答案 0 :(得分:2)

当您使用参数数组调用git push origin mymessydev时,它将不会使用调用PDOStatement::execute()中指定的参数。相反,只需将PDOStatement::bindParam()$start变量附加到$limit的末尾并调用$myArr

$sql->execute()

请参阅有关PHP PDO文档的this评论。