0

实现以下目标的最佳方法是什么:

class abc
{

 function xyz()
    {
      $PDO->Query(); //run any query
    }

}

不想在每个 PDO 查询/操作上建立连接。

我们如何使用公共函数、类或其他东西来实现上述数据库连接。

谢谢。

我需要更新它。

不想在同一个班级建立联系。连接需要从其他类/函数导入。此类 abc 不得建立连接。数据库连接来自其他类或公共功能或任何其他好的方法,这正是我正在寻找的。

4

3 回答 3

2
class abc
{
    private $PDO;

    function __construct($pdo)
    {
        $this->PDO = $pdo;
    }
    function xyz()
    {
        $this->PDO->Query(); //run any query
    }

}
$pdo = new PDO(...);
$foo = new abc($pdo);
于 2013-10-31T05:56:34.380 回答
0
// OOP Database Connection
class db{
  private $host;
  private $username;
  private $passwoord;
  private $dbname;

  protected function connect(){
   $this->host="localhost";
   $this->username="root";
   $this->password="";
   $this->dbname="database";
   $conn = new mysqli($this->host,$this->username,$this->password,$this->dbname);
   return $conn;
 }
}
于 2021-04-17T03:27:25.213 回答
-2

您可以使用单例模式来保持连接...

class DB {
    private $_conn = null;

    // Make private to prevent direct object creation
    private function __construct($config) {
        $this->_conn = new PDO("mysql:host=".$config["host"].";port=".$config["port"].";dbname=".$config["dbname"], $config["user"], $config["password"]);
    }

    public static function connect($config) {
        static $_instance = null;
        if($_instance == null){
            $_instance = new DB($config);
        }
        return $_instance;
    }

    public function query ($res) {
        $query = $this->_conn->prepare($res);
        $query->execute();
        return $query;
    }
}

可以像这样使用它来创建 PDO 连接或获取现有 PDO 连接:

$db = DB::connect($config);
$res = $db->query("SELECT * FROM table");
于 2013-10-31T06:00:41.243 回答