【发布时间】:2014-11-19 09:42:44
【问题描述】:
我一直在研究注册系统。与 db 交互的数据非常敏感,所以我试图特别注意细节。 这是我如何进行插入的示例。
try{
$query="INSERT INTO account (user_id,password,salt) VALUES (:user_id,:password,:salt)";
$stmt=$db->prepare($query);
$params=array(':user_id'=>$userId,':password'=>$password,':salt'=>$salt);
$result=$stmt->execute($params);
if(!$result){
$db->rollBack();
doStaff();
}
}
catch(PDOException $e){
$db->rollBack();
doStaff();
}
我想知道是否存在执行操作的结果返回 false 但 pdo 不抛出异常的情况?我应该同时检查它们,还是我偏执?
【问题讨论】:
-
$stmt->execute()绝对可以返回 false 而不会引发异常。但是,$db->rollback()会回滚您未使用的事务。 -
@castis 我正在使用它,你可以在代码中看到它。你能具体说明一下execute什么时候返回false而不抛出异常吗?
-
你了解transactions吗?这就是
rollback的用途;就目前而言,在您的代码中对rollback的调用没有任何作用。 -
@wavemode 这只是我代码的一部分,当然包括多个查询; $db->beginTransaction() 如果这是你的要求。
-
@Whitney 好的,只是检查一下 :)