Intereting Posts
сохранить значение формы после отправки Как создать многомерный массив из списка? Являются ли интерфейсы просто «синтаксическим сахаром»? URL-адрес перезаписи для субдомена RSS Пространства имен с использованием Zend_Feed_Reader Отобразить PHP-код в браузере из того же исходного сценария Проблема при загрузке php-файла в переменную (Загрузить результат php-кода вместо кода в виде строки) Разработка безопасной системы cookie для автозапуска в PHP Сессии Отказоустойчивость с PHP-memcache против memcached Стационарный метод в PHP имеет какую-либо разницу с нестационарным методом? Формат сообщения о действиях или загрузка файлов XML? Получить $ _POST от PHP до Javascript и передать его другому php Предупреждение: mysql_fetch_assoc () ожидает, что параметр 1 будет ресурсом, boolean given Как получить первый субдомен с PHP? Удалить (unlink) или Создать (fwrite) файл с PHP, когда файл используется

Глобальная переменная – соединение с базой данных?

Я пытаюсь подключиться к базе данных (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();

Я действительно озадачен тем, как я должен это делать. Может ли кто-нибудь помочь?

— Редактировать — Это мой новый файл 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 

Related of "Глобальная переменная – соединение с базой данных?"

Лично я использую одноэлементный класс. Что-то вроде этого:

 <?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(); где бы я ни нуждался.