使用下面的代码时出现此错误(所有内容都在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();