最好的做法是始终检查PDOStatement :: execute的返回值吗?

时间:2014-11-09 12:40:48

标签: php pdo

我有一个Permission类,其方法类似于以下方法。

public function AddComponentToAccount($component_id,$account_id)
{       
    $sql = "INSERT INTO component_permissions
            (account_id,component_id)
            VALUES
            (:account_id,:component_id)";

    $q = $this->db->prepare($sql);
    $q->bindValue(':acount_id',$account_id);
    $q->bindValue(':component_name',$component_id);
    $q->execute();
}

我的问题是 - 最后一行真的应该是return $q->execute();吗?以下两个,哪个更好?或者这是主观的吗?

if(!$Permission->AddComponentToAccount($component_id,$account_id)){
    ...
}

-

try {
    $Permission->AddComponentToAccount($component_id,$account_id)
} catch(Exception $e) {
    HandleError($e);
}

我已经知道传递给AddComponentToAccount的变量很好。例外情况可能是复合PK违规,或者DB已关闭。

1 个答案:

答案 0 :(得分:2)

这取决于PDO错误处理方法。

  • 如果您使用的是PDO::ERRMODE_EXCEPTION,那么您需要尝试... catch block
  • 如果您使用PDO::ERRMODE_SILENTPDO::ERRMODE_WARNING,则只需管理错误代码

现在考虑在哪里管理错误,我更喜欢让异常在调用者代码中冒泡,这样你就可以根据调用者来管理你的行为(这就是为什么做的例外)。

解决您的问题,如果您使用PDO::ERRMODE_EXCEPTION,则不需要管理 返回代码和异常本身。