我想连接到一个数据库(MySQLi)只有一次,但我有问题这样做。全局变量 - 数据库连接?
如何为整个脚本创建全局连接?有多个文件(index.php,/classes/config.class.php,/classes/admin.class.php等)。
我已经试过如下:
在:config.class.php
public static $config = array();
public static $sql;
function __construct() {
// database
db::$config['host'] = 'localhost';
db::$config['user'] = '_';
db::$config['pass'] = '_';
db::$config['db'] = '_';
// connect
db::$sql = new mysqli(db::$config['host'], db::$config['user'], db::$config['pass'], db::$config['db']);
}
再次,在config.class.php
public function contectToDatabase($sql){
$sql = new mysqli(db::$config['host'], db::$config['user'], db::$config['pass'], db::$config['db']);
$this->sql = $sql;
}
我用的是类的以下代码: $config = new db();
我真的很困惑a我怎么做到这一点。谁能帮忙?
---编辑--- 这是我的新config.class.php文件:
public static $config = array();
public static $sql;
private static $db;
private $connection;
public function __construct() {
// database
db::$config['host'] = '_';
db::$config['user'] = '_';
db::$config['pass'] = '_';
db::$config['db'] = '_';
// connect
$this->connection = new mysqli(db::$config['host'], db::$config['user'], db::$config['pass'], db::$config['db']);
}
function __destruct() {
$this->connection->close();
}
public static function getConnection() {
if($db == null){
$db = new db();
}
return $db->connection;
}
这就是我如何加载它:
require_once("classes/config.class.php");
$config = new db();
$sql = db::getConnection();
但是,在运行一个real_escape_string导致以下错误:
Warning: mysqli::real_escape_string() [mysqli.real-escape-string]: Couldn't fetch mysqli in /home/calico/_/_.com/_/index.php on line 20
Warning: mysqli::query() [mysqli.query]: Couldn't fetch mysqli in /home/calico/_/_.com/_/index.php on line 28
你可以使用[singleton pattern](http://en.wikipedia.org/wiki/Singleton_pattern) – knittl
或者你可以学习依赖注入而不是使用[singleton antipattern](http://stackoverflow.com/ question/4595964/who-needs-singletons/4596323#4596323) – Gordon
是的......单身人士总是引发热议。我只是提供输入和想法 – knittl