2013-09-19 7 views
-1

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

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

class db 
{ 
    private static $connection; 
    const __DB__HOST__  = __DB__HOST__; 
    const __DB_USERNAME__ = __DB_USERNAME__; 
    const __DB_PASSWORD__ = __DB_PASSWORD__; 
    const __DB_NAME__  = __DB_NAME__; 

    private static function getConnection() { 
      if (self::$connection === null) { 
       try { 
       self::$connection = new PDO("mysql:__DB_NAME__=pdo;host=".__DB_HOST__, __DB_USERNAME__, __DB_PASSWORD__); 
       return self::$connection; 
      } 
      catch(PDOException $e) 
      { 
       echo $e->getMessage(); 
      } 

     } 
     /*** close the database connection ***/ 
     //self::$connection = null; 
    } 

    //return all results from sqlquery in array 
    public static function dbDataArray($sql_string){ 
     $conn = self::getConnection(); 
     $sth = $conn->prepare($sql_string); 
     $sth->execute(); 
     $result = $sth->fetchAll(); 
     print_r($result); 
    } 
} 
+1

Пожалуйста, не выбрасывайте исключение и продолжить выполнение. Как ваша программа должна продолжаться без подключения к базе данных? Я настоятельно рекомендую удалить блок try и try 'catch'. Вы также испортили ленивый подход. 'Return' должен находиться вне блока' if'. – Phil

+0

Возможный дубликат [Попытка создания статического класса db, доступ к которому я могу получить из любой функции вне класса] (http://stackoverflow.com/questions/18885421/trying-to-build-a-static-db-class -that-i-can-access-from-any-function-outside-of) – Phil

+0

Спасибо за помощь Фил, я все еще изучаю PDO, и я бы назвал себя неофитом, когда речь заходит о ООП. Я написал несколько уроков с нуля, но ничего сложного. – MadScientist

ответ

3

Попробуйте изменить код GetConnection на:

self::$connection = new PDO("mysql:dbname=".__DB_NAME__.";host=".__DB_HOST__, __DB_USERNAME__, __DB_PASSWORD__); 
+0

, который сделал трюк! Не могу поверить, что я пропустил это. Теперь о всех других функциях в классе! – MadScientist

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