У меня есть отдельный файл с экземпляром объекта mysqli
который находится в папке, называемой includes
в root
называемом connect.php
:
$db = new mysqli($host, $user, $password, $dbname);
if ($db -> connect_errno) {
echo $db -> connect_error;
}
Моя первая страница имеет require
и использует объект $db
для выполнения задачи real_escape_string
которая работает хорошо. У меня есть functions.php
в includes
в includes
папку также. Внутри этого есть функция, называемая sendToDB
которая использует функцию query
. functions.php
включает функцию require
. Однако я получаю сообщение:
Неустранимая ошибка: вызов функции-функции-члена() для не-объекта...
Если я sendToDB
экземпляр объекта в функции sendToDB
он успешно записывает в БД. Как только я это вынесу, я получаю такое же сообщение. Это глобальная проблема? или я лучше всего создаю его везде, где он мне нужен? Также при использовании $db
на нескольких страницах безопасно запускать $db->close();
после окончания с ним на каждой странице?
В начале функций, которые используют объект базы данных (например, sendToDB), убедитесь, что у вас есть строка:
global $db;
Это необходимо для использования глобальных переменных внутри функций.
global
потому что этоrequired
. Лучше всего иметьrequired
илиrequired_once
как мой файлfunctions.php
находится на других страницах php. Просто я прочитал, что php не любит, когда функции объявляются более одного раза.