使用 PDO,如何确保 UPDATE 语句成功?

2022-08-30 16:33:49

似乎对于 INSERT 语句,可以使用来检查 INSERT 语句是否成功。(如果我错了,请纠正我。if (isset($connect->lastInsertId()))

但是对于 UPDATE 语句,我怎么知道它是否成功?

例如,我有一个像这样的基本:

$statement=$connect->prepare("UPDATE users SET premium='1' WHERE userid=?");
$statement->execute(array($id));

提前非常感谢。问候


答案 1

这取决于你所说的“成功”是什么意思。如果您的意思是查询执行时没有失败,则要么在失败时引发异常,要么从 返回,具体取决于您设置的错误模式,因此在这种情况下,“成功”查询将只是执行方法未返回或引发异常的查询。PDOFALSEPDOStatement::execute()FALSE

如果你的意思是“成功”,因为实际上更新了行(而不是只更新了0行),那么你需要使用PDOStatement::rowCount()进行检查,这将告诉你上一个查询中受影响的行数。

警告:对于返回零的更新。您可以使用newvalue = oldvaluePDOStatement::rowCount()

$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));

为了禁用此意外行为。


答案 2
$stmt->execute();
$count = $stmt->rowCount();

if($count =='0'){
    echo "Failed !";
}
else{
    echo "Success !";
}

推荐