gpt4 book ai didi

php - 通过 PDO 准备查询更新表

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

我在尝试根据页面上收到的代码更新值时遇到问题。

例如:

http://example.com/register.php?code=fa82f82712d1 (不是实际的代码,实际上它始终是 32 个字符的代码)。

我启动一个事务,并按以下方式进行更新:

$stmt = $stmt->prepare("UPDATE USER SET GOT_CODE = 1 WHERE CODE = :code");

然后从之前获得的代码中执行 $stmt->execute(array(':code' => $code));

但它永远不会更新任何内容,我正在运行 rowCount() (给我“0”)并关闭事务,但似乎无法更新它。

列类型为 CHAR(32),应与收到的代码长度匹配。

是否有可能因为数据类型而造成困惑?

最佳答案

也许之前绑定(bind)参数,例如:

$stmt2 = $stmt->prepare("UPDATE USER SET GOT_CODE = 1 WHERE CODE = :code");
$stmt2->bindParam(":code", $code, PDO::PARAM_STR);
if ($stmt2->execute()){
$stmt->commit();
} else {
$stmt->rollBack();
}

编辑:在其他人的评论之后。基本就是不使用

$stmt = $stmt->prepare("UPDATE USER SET GOT_CODE = 1 WHERE CODE = :code");

但要给出不同的变量名称,例如

$stmt2 = $stmt->prepare("UPDATE USER SET GOT_CODE = 1 WHERE CODE = :code");

因为否则系统将覆盖 $stmt 并且不再工作

关于php - 通过 PDO 准备查询更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27503392/

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