我无法弄清楚为什么我得到 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多个值,其大小不固定。
答案 0 :(得分:2)
当您使用参数数组调用git push origin mymessydev
时,它将不会使用调用PDOStatement::execute()
中指定的参数。相反,只需将PDOStatement::bindParam()
和$start
变量附加到$limit
的末尾并调用$myArr
。
$sql->execute()
请参阅有关PHP PDO文档的this评论。