2012-03-08 2 views
0

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

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

Подключение производится в конфигурационном файле:

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?

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

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

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

Tim

+0

Просто интересно. Почему, почему вы хотите использовать ADODB с PHP по свободному выбору? – dubvfan87

+0

Я привязан к использованию mysql + php, и это казалось лучшим/самым простым вариантом для простого кэширования запросов. – Tim

ответ

0

Похоже, вы не информируя 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']; 
     } 
    } 
} 
Смежные вопросы