使用 PDO 连接数据库的函数
Function to connect to database using PDO
我必须在数据库 class 中创建 getConnection 函数。该函数应该使用 PDO 对象连接到数据库并返回它。
我有这样的东西:
class Database {
public function getConnection() {
$result = new PDO('mysql:host=localhost;dbname=demo', 'root', '');
return $result;
}
}
是否正确?我怎么知道我是否连接到数据库?
如果连接尝试失败,PDO 将抛出异常,因此您可以像这样对其进行规范化:
class Database {
private $_conn = null;
public function getConnection() {
if (!is_null($this->_conn)) {
return $this->_conn
}
$this->_conn = false;
try {
$this->_conn = new PDO('mysql:host=localhost;dbname=demo', 'root', '');
} catch(PDOException $e) { }
return $this->_conn;
}
}
$db = new Database();
$conn = $db->getConnection();
if (!$conn) {
die("Error connecting to the database");
}
$conn->whatever();
How can i know if i'm connected to database?
如果连接错误,PDO 将抛出异常。
Is it correct?
不,这不是一个好主意,因为该方法被称为 getConnection
,而实际上它 创建 一个连接。并且 public
属性 要求在应用程序代码中调用它,导致来自同一脚本的 多个连接 。
此外,您应该始终将PDO 设置为异常模式。你也应该在 DSN 中设置字符集。
取决于此功能的建议用途,代码可能是
protected function connect()
{
$pdo = new PDO('mysql:host=localhost;dbname=demo;charset=utf8', 'root', '');
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
return $pdo;
}
如果它打算在构造函数中只使用一次。
而对于 getConnection()
函数,您必须使用静态变量来保存 PDO 的单个实例。
最近我花时间整理了文章Your first DB wrapper's childhood diseases中数据库包装器的所有常见错误。您可能会发现这篇文章非常有用。
我必须在数据库 class 中创建 getConnection 函数。该函数应该使用 PDO 对象连接到数据库并返回它。 我有这样的东西:
class Database {
public function getConnection() {
$result = new PDO('mysql:host=localhost;dbname=demo', 'root', '');
return $result;
}
}
是否正确?我怎么知道我是否连接到数据库?
如果连接尝试失败,PDO 将抛出异常,因此您可以像这样对其进行规范化:
class Database {
private $_conn = null;
public function getConnection() {
if (!is_null($this->_conn)) {
return $this->_conn
}
$this->_conn = false;
try {
$this->_conn = new PDO('mysql:host=localhost;dbname=demo', 'root', '');
} catch(PDOException $e) { }
return $this->_conn;
}
}
$db = new Database();
$conn = $db->getConnection();
if (!$conn) {
die("Error connecting to the database");
}
$conn->whatever();
How can i know if i'm connected to database?
如果连接错误,PDO 将抛出异常。
Is it correct?
不,这不是一个好主意,因为该方法被称为 getConnection
,而实际上它 创建 一个连接。并且 public
属性 要求在应用程序代码中调用它,导致来自同一脚本的 多个连接 。
此外,您应该始终将PDO 设置为异常模式。你也应该在 DSN 中设置字符集。
取决于此功能的建议用途,代码可能是
protected function connect()
{
$pdo = new PDO('mysql:host=localhost;dbname=demo;charset=utf8', 'root', '');
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
return $pdo;
}
如果它打算在构造函数中只使用一次。
而对于 getConnection()
函数,您必须使用静态变量来保存 PDO 的单个实例。
最近我花时间整理了文章Your first DB wrapper's childhood diseases中数据库包装器的所有常见错误。您可能会发现这篇文章非常有用。