使用下面的代码时出现此错误(所有内容都在try-catch块中):
SQLSTATE[HY093]:无效参数编号:绑定变量数
与令牌数不匹配

$item_q = 4;
$item_no = 12;

$update = $db->prepare("UPDATE stock
  SET quantity = quantity - :item_q
  WHERE item_number = :item_no");

$update->execute([':item_q' => $item_q]);
$update->execute([':item_no' => $item_no]);

这是与:item_q有关的东西引起了问题,我不知道它是什么。当我用一个数字替换sql查询中的:item_q时,它就工作了。我很高兴能得到帮助!:)

最佳答案

发行
目前,您执行两次,每次绑定一个参数。
解决方案
您需要先绑定参数,然后再执行,或者在绑定两个参数的情况下执行。
PDOStatement::execute()函数中同时使用两个绑定值执行

$update->execute([":item_q" => $item_q, ":item_num" => $item_no]);

使用PDOStatement::bindParam()函数绑定参数后执行
$update->bindParam(":item_q", $item_q, PDO::PARAM_INT);
$update->bindParam(":item_num", $item_no, PDO::PARAM_STR);
$update->execute();

09-10 04:59
查看更多