通过PDO准备查询更新表


Updating table via PDO prepare query

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

例如:

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(,它应与收到的代码长度匹配。

是否有可能因为数据类型而引起混淆?

也许在像这样之前绑定参数:

$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");

但是要给出不同的var名称,例如

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

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