gpt4 book ai didi

php - 在准备好的语句中使用占位符时出错

转载 作者:行者123 更新时间:2023-11-29 01:11:08 25 4
gpt4 key购买 nike

我在使用下面的代码时遇到了这个错误(一切都在 try catch block 中):

SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

$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 时,它起作用了。我很高兴能得到一些帮助! :)

最佳答案

问题

目前您正在执行两次,每次都绑定(bind)一个参数。

解决方案

你想要么先绑定(bind)参数然后执行,要么在两个参数都绑定(bind)的情况下执行。

PDOStatement::execute() function

中执行两个绑定(bind)值
$update->execute([":item_q" => $item_q, ":item_num" => $item_no]);

绑定(bind)参数后执行 PDOStatement::bindParam() function

$update->bindParam(":item_q", $item_q, PDO::PARAM_INT);
$update->bindParam(":item_num", $item_no, PDO::PARAM_STR);
$update->execute();

关于php - 在准备好的语句中使用占位符时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com