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等框架。这将为您节省大量时间,并教会您许多最佳实践