PHP:数据库连接锅炉板代码


PHP: Database Connection Boilerplate Code

在我使用的几乎每一个涉及数据库操作的脚本/函数中,我都使用以下代码:

$conn = connect();
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$sql = '...';
$stid = oci_parse($conn, $sql);
oci_execute($stid);
oci_fetch_all(...);
oci_close($conn);

$sql和偶尔的获取方法各不相同,但其余的在我所知的所有情况下都保持100%相同。这是通过PHP进行DB操作的正确方法吗?如果没有,我如何避免这个样板代码?

您可以走OO路线。例如

Class DatabaseConnection {
  private $conn;
  public function __construct() { 
         $this->conn = connect();       
         if (!$this->conn) {
         $e = oci_error();
         trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);       
  }
  public function ExecuteQuery( $sql) {
      $stid = oci_parse($this->conn, $sql);
      oci_execute($stid);
      $aResult = oci_fetch_all(...);
      oci_close($this->conn);
      return $aResult;
  }
}

然后,您的代码就可以实例化这个类并传入sql。所以在你的剧本里。。。

$sql = '...';
$oNewDatabaseConnection = new DatabaseConnection();
$aResult = $oNewDatabaseConnection->ExecuteQuery($sql);

如果fetch的方法不同,那么您可以向类中添加一些新函数来反映这一点。

最好的方法是使用您反复使用的方法创建一个Database类(例如,它应该自动连接到构造函数中的数据库)。

然而,我强烈鼓励你不要重新发明轮子。开始使用Codeigniter、Kohana、Laravel等框架。这将为您节省大量时间,并教会您许多最佳实践。