2

我刚开始使用 PDO,想知道如何最好地声明数据库连接?

最好的做法是创建一个脚本如下,例如名为 config.php

配置文件

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true
));
?>

然后有example.class.php

<?php
include config.php;
class Example {
    public function fetch() {
          $data = $dbh->query('SELECT * FROM myTable WHERE name = ' . $conn->quote($name));
          // do stuff
    }

}
?>

为我所有的课程都这样做?或者这会建立多个连接吗?我希望尽可能少的连接。

4

3 回答 3

2

您的示例看起来不错,它只会创建一个持久连接。

但是,您应该传入of ,然后再做而不是依赖于$dbh全局。__constructExample$this->dbh$dbh

为了避免在所有需要访问的类中这样做,您可以实现一个处理 DB 和其他inherit的类,或者实现一个Trait.

于 2013-10-14T16:50:47.657 回答
2

你很接近,但你的fetch功能将无法工作,因为$dbh它超出了它的范围。

您可以将其全球化,但更好的解决方案是在实例化时将您的处理程序传递给您的类

class Example {
    /** @var \PDO */
    protected $pdo;

    public function __construct(\PDO $pdo) {
         $this->pdo = $pdo;
    }
}
$class = new Example($dbh);

这是一个最佳实践。这样,设置和命名数据库指针的后勤工作就无关紧要了。您的类定义了它将如何接收它,并且您使用传递的指针的实例。

于 2013-10-14T16:54:26.600 回答
0

为了保持干净和有条理的代码,您可以创建一个“DbManager”类并实例化 PDO、创建查询和其他方法等......您可以使用 config.php 来存储您的应用程序配置。

于 2013-10-14T16:59:44.097 回答