数据库连接php OOP

时间:2013-10-31 05:53:37

标签: php database oop pdo connection

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

class abc
{

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

}

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

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

感谢。

我需要更新它。

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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;
 }
}

答案 2 :(得分:-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");