PHP:数据库连接样板代码

PHP:数据库连接样板代码,php,database,oracle,boilerplate,Php,Database,Oracle,Boilerplate,在我使用的几乎所有涉及数据库操作的脚本/函数中,我都使用以下代码: $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(...

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

$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);

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

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

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