PHP PDO。如果更新查询rowcount为零,我应该抛出异常吗?

时间:2015-01-28 14:23:50

标签: php mysql exception pdo sql-update

我正在开发我的第一个OO PHP网站。

当我调用更新功能时,例如取消阻止用户,我将检查这是否成功。如果不是,我会抛出这样的例外:

业务层代码:

if($DB->unblockUserByUsername($username) === FALSE){ 
    throw new DBExpectedRowUpdate("Expected row update."); 
}

DB Class中的被调用函数:

public function unblockUserByUsername($input){ 
    $sql = "UPDATE user SET ......"; //<- imagine valid update query 
    return $this->updateQuery($sql) === 1; // Return bool
}

我想,我没有更新功能,我不希望更新一行。所以每次我在上层调用更新函数时,我最终会做这个检查。

所以我认为在DB类更新函数本身中抛出此异常是不是更好?像:

private function updateQuery($sql, $dontThrowError = FALSE){ 
    $this->CheckConn(); try {
         $affectedRows = $this->DBH->exec($sql.";"); 
         $this->DBH->commit();

         //Check affected rows count
         if($affectedRows === 0 && $dontThrowError !== TRUE){
             throw new DBExpectedRowUpdate("Expected row update.");
         }

         return $affectedRows;
    } catch(PDOException $e) { 
         $this->DBH->rollback(); 
         return -1;  // Also throw error here
    }
}

我问这个是因为我似乎无法找到关于这个主题或类似案例的最佳实践例子。

0 个答案:

没有答案