2015-12-16 2 views
0

У меня есть три разных класса, которые я использую на определенной странице php для извлечения некоторых данных из моей базы данных. Каждый класс выполняет свою собственную процедуру подключения с использованием PDO. Как я могу проверить, установлено ли соединение с mysql с помощью pdo? Мой код подключения ниже:Метод определения того, установлено ли соединение mysql PDO. PHP

try 
{ 
    $DB_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); 
    $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $DB_con->exec("SET CHARACTER SET utf8"); 
} 
catch(PDOException $exception) 
{ 
    echo $exception->getMessage(); 
} 
+4

*** Зависимость от инъекции! *** Не проверяйте, * знаете *. Способ знать, что вы только когда-либо создаете один экземпляр PDO, который вы передаете каждому из ваших классов. – deceze

+1

Используйте шаблон регистрации или Singleton, чтобы убедиться, что вы используете только одно соединение! –

ответ

0

решения было бы создать общественные $ собственность DB (в каждом классе), а затем при создании экземпляра каждого класса на вашей одной странице вы передаете предыдущие классы DB параметры к ней, как так:

class a { 

    public $db = null 

    public function setDB($db = null){ 
     if (is_null($db)){ 
      try 
      { 
       $DB_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass); 
       $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
       $DB_con->exec("SET CHARACTER SET utf8"); 
$this->db = $DB_con; 
      } 
      catch(PDOException $exception) 
      { 
       echo $exception->getMessage(); 
      }  
     } else { 
      $this->db = $db; 
     } 
    } 
} 

класс б и был бы таким же, как класса а

Затем на странице загрузки:

$a = new a; 
$b = new b; 
$b->setDB($a->db); 
$c = new c; 
$c->setDB($a->db); 

Затем вы можете позвонить своим 3 классам, но только с 1 подключением к базе данных

+0

Любые причины для этого не заданы в качестве ответа? Это не сработало? – Ukuser32

Смежные вопросы