PHP:数据库连接Boilerplate代码

时间:2013-12-04 12:47:44

标签: 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(...);

oci_close($conn);

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

2 个答案:

答案 0 :(得分:1)

你可以走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);

如果获取的方法不同,那么您可以在课程中添加一些新功能以反映这一点。

答案 1 :(得分:0)

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

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