通过PDO更新表准备查询

时间:2014-12-16 11:16:55

标签: php mysql pdo

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

例如:

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

由于数据类型,它是否可能导致混淆?

1 个答案:

答案 0 :(得分:0)

也许在之前绑定参数:

$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而不再工作