我正在尝试为单例数据库类编写一个 query() 方法。我有这个,但它还没有飞行,正在寻找一些灵感。
<?php
class Database
{
static private $instance = null;
protected $mysqli;
static public function getInstance()
{
if (null === self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
private function __construct(){
if(!$this->mysqli = new mysqli('localhost','user','pass','db'))
throw new Exception('Error - Database connection');
}
public function query($query) {
while ($this->mysqli->query($query))
{
$row = $this->mysqli->fetch_assoc();
}
return $row; // loop through array
}
private function __clone(){}
}
?>
我不完全确定我是否走在正确的道路上。mysqli 会在这种情况下工作吗?例如,Mysqli 类已经有一个 query() 方法作为其类的一部分。我在这里介绍命名空间冲突?
我的查询方法可以处理任何类型的 SQL 语句,即。
示例客户端代码:
$DB = Database::getInstance();
$DB->query("SELECT * FROM t");
$DB->query("DELETE FROM t WHERE id=2");
$DB->query("UPDATE u SET col = 'random' WHERE id=4");