ADOdb - область видимости PHP + MySQL и соединение - PullRequest
0 голосов
/ 09 марта 2012

Я только что переключился на использование ADODB с MySQL и PHP ... У меня проблемы с подключением к базе данных.Раньше я мог просто иметь одно глобальное соединение с базой данных и выполнять запросы этого, но теперь кажется, что мне нужно новое соединение в каждом классе?

Это так, как это должно работать, или я что-то делаюнеправильно?

Соединение установлено в файле конфигурации:

include 'admin/db/adodb.inc.php';
$DB = NewADOConnection('mysql');
$DB->Connect($server, $db_user, $db_pwd, $db);

Используемый класс:

class getuser {
    public function __construct($user_id) {
        $userquery = $DB->Execute("SELECT * FROM users WHERE id = '".$user_id."'");
        while($user = $userquery->FetchRow()){
            $this->uid = $user['id'];
            $this->username = $user['username'];
            $this->email = $user['email'];
        }
    }
}

Используемые переменныедля подключения все в порядке.Если бы я включил сам файл конфигурации в класс, он работает нормально, так что это должно быть связано с областью действия $ DB?

Очевидно, я не хочу иметь новое соединение с базой данных для каждогокласс / запрос ...

Кроме того, мне нужно беспокоиться о закрытии соединения в любой момент?

Заранее большое спасибо

Тим

1 Ответ

0 голосов
/ 09 марта 2012

Похоже, вы не сообщаете PHP, что $ DB является глобальной переменной. Попробуйте следующее:

class getuser {
    public function __construct($user_id) {
        global $DB;
        $userquery = $DB->Execute("SELECT * FROM users WHERE id = '".$user_id."'");
        while($user = $userquery->FetchRow()){
            $this->uid = $user['id'];
            $this->username = $user['username'];
            $this->email = $user['email'];
        }
    }
}
...