Проблема с областью подключения к базе данных классов PHP

StackOverflow https://stackoverflow.com/questions/138565

Вопрос

Для нового проекта, который я делаю на PHP, я создал класс SQLMethods для подключения к базе данных и выполнения запросов.Сегодня вечером я впервые смог его протестировать (я написал это примерно неделю назад и забыл об этом), и произошла непредвиденная ошибка:Когда он вызывал мою функцию ExecuteQuery(), он не использовал базу данных, которую я выбрал в конструкторе.

Конструктор:

    public function SQLMethods() {
        $SQLConnection = mysql_connect($SQLDBAddress, $SQLUserName, $SQLPassword);

        if (!$SQLConnection) {
            die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($SQLDB, $SQLConnection);
    }

Рассматриваемая функция:

    public function ExecuteQuery($Query) {
        mysql_query($Query, $SQLConnection) or die('Could not perform query: ' . mysql_error());
    }

Кто-нибудь понимает, в чем может быть проблема?Закрывается ли соединение после завершения конструктора?

Это было полезно?

Решение

вы должны объявить $SQLConnection в своем классе и ссылаться на него как

 $this->SQLConnection

а не просто $SQLConnection.

Другие советы

$SQLConnection не существует внутри ExecuteQuery метод.

Вы можете передать его непосредственно в качестве параметра ExecuteQuery, или добавьте sqlConnection свойство класса, которое устанавливается в конструкторе и доступно как $this->sqlConnection внутри методов вашего класса.

Переменная $SQLConnection ExecuteQuery() который пытается использовать, создан в другой области.( SQLMethods функция).

Соединение закрывается, когда PHP-скрипт выполнил свою работу или если вы закрываете его самостоятельно (если соединение установлено внутри этого сценария)

Вам следует пропустить $SQLConnection переменная внутри ExecuteQuery как указано в документации php.net

Если идентификатор ссылки не указан, будет использована последняя ссылка, открытая пользователем. mysql_connect() предполагается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top