实现以下目标的最佳方式是什么:
class abc
{
function xyz()
{
$PDO->Query(); //run any query
}
}
不希望在每个PDO查询/操作上建立连接。
我们如何使用公共函数,类或其他东西来实现上面的数据库连接。
感谢。
我需要更新它。
不想在同一个类中建立连接。需要从其他类/函数导入连接。这个类abc不能连接。数据库连接来自其他类或公共函数或任何其他好的方法,这正是我正在寻找的。 p>
答案 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");