Глобальная переменная - подключение к базе данных?
Я пытаюсь подключиться к базе данных (MySQLi) только один раз, но у меня проблемы с этим.
как сделать соединение глобальным для всего скрипта? Существует несколько файлов (index.php, / classes / config.класс.php, / classes / admin.класс.PHP и т. д.).
Я пробовал следующие:
In: config.класс.в 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.класс.в 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();
Я действительно озадачен тем, как я должен это сделать. Кто-нибудь может помочь?
--- редактировать --- Это моя новая конфигурация.класс.файл 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
1 ответов
лично я использую класс singleton. Что-то вроде этого:--3-->
<?php
class Database {
private static $db;
private $connection;
private function __construct() {
$this->connection = new MySQLi(/* credentials */);
}
function __destruct() {
$this->connection->close();
}
public static function getConnection() {
if (self::$db == null) {
self::$db = new Database();
}
return self::$db->connection;
}
}
?>
тогда просто используйте $db = Database::getConnection();
там, где мне это нужно.