似乎对于INSERT语句,可以使用if (isset($connect->lastInsertId()))
以检查INSERT语句是否成功.(如果我错了,请纠正我.)
但是对于UPDATE语句,我怎么知道它是否成功?
例如,我有一个像这样的基本的:
$statement=$connect->prepare("UPDATE users SET premium='1' WHERE userid=?");
$statement->execute(array($id));
Run Code Online (Sandbox Code Playgroud)
非常感谢提前.问候
FtD*_*Xw6 25
这取决于你对"成功"的意思.如果你的意思是在没有失败的情况下执行查询,那么PDO
将在失败时返回异常或FALSE
从中返回PDOStatement::execute()
,这取决于你设置的错误模式,因此在这种情况下"成功"查询只是执行方法执行的查询不归还FALSE
或抛出异常.
如果你的意思是"成功",实际上有更新的行(只更新了0行),那么你需要检查使用PDOStatement::rowCount()
,这将告诉你上一个查询中受影响的行数.
警告:对于newvalue = oldvalue
PDOStatement::rowCount()
返回零的更新.您可以使用
$p = new PDO($dsn, $u, $p, array(PDO::MYSQL_ATTR_FOUND_ROWS => true));
为了禁用这种意外行为.
小智 9
$stmt->execute();
$count = $stmt->rowCount();
if($count =='0'){
echo "Failed !";
}
else{
echo "Success !";
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17295 次 |
最近记录: |