За последние 24 часа нас посетили 17824 программиста и 1646 роботов. Сейчас ищут 858 программистов ...

PDO:: пустой массив возвращается

Тема в разделе "PHP для новичков", создана пользователем xfreewindx, 28 фев 2012.

  1. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    Здравствуйте всем!
    не пойму почему var_dump($articles_array); выдает пустой массив? База не пустая и если пользоваться mysql_connect, то работает корректно.

    Код (Text):
    1.  
    2. Class TestPDO {
    3.  
    4.     public static $dbh;
    5.  
    6.     public static function dbConnect() {
    7.         $hostname = 'localhost';
    8.         $username = 'root';
    9.         $password = '';
    10.         $dbName = 'news';
    11.  
    12.         self::$dbh = new PDO("mysql:$dbName; host:$hostname", $username, $password);
    13.     }
    14.  
    15.     public static function articles_all() {
    16.         self::dbConnect();
    17.  
    18.         $query = "SELECT * FROM `articles` ORDER BY `id_article` DESC";
    19.         $stmt = self::$dbh->prepare($query);
    20.         $stmt->execute();
    21.         $articles_array = $stmt->fetchAll();
    22.         var_dump($articles_array);
    23.  
    24.         return $articles_array;
    25.     }
    26.  
    27. }
    28.  
    29. $obj = new TestPDO();
    30. $obj->articles_all();
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Попробуй

    self::$dbh = new PDO("mysql:host=$hostname; dbname=$dbName", $username, $password);
     
  3. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    попробовал на денвере
    все равно пишет Array() Empty
    с денвером вроде все нормально PDO включен
    попробовал на хостинге, также пишет array(0) { }
    что за ерунда
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Вот такая штука (переделал твоё немного, в основном - изменил параметры подключения к б.д. и запрос немного) у меня работает

    Код (PHP):
    1. <?php
    2. Class TestPDO {
    3.     public static $dbh;
    4.     public static function dbConnect() {
    5.         $hostname = 'localhost';
    6.         $username = 'root';
    7.         $password = '123';
    8.         $dbName = 'gal';
    9.         self::$dbh = new PDO("mysql:dbname={$dbName};host={$hostname}", $username, $password);
    10.     }
    11.     public static function articles_all() {
    12.         self::dbConnect();
    13.         $query = "SELECT * FROM `tbl_galleries` ORDER BY `gal_id` DESC";
    14.         $stmt = self::$dbh->prepare($query);
    15.         $stmt->execute();
    16.         $articles_array = $stmt->fetchAll();
    17.         return $articles_array;
    18.     }
    19. }
    20. $rows = TestPDO::articles_all();
    21. print_r($rows);
    22. ?>
    Добавлено спустя 2 минуты 21 секунду:
    Попробуй после
    $stmt->execute();
    добавить
    var_dump($stmt->errorInfo());
     
  5. xfreewindx

    xfreewindx Активный пользователь

    С нами с:
    22 фев 2012
    Сообщения:
    55
    Симпатии:
    0
    Респект вам! :)
    Спасибо, надо было заэкранировать всего лишь {$dbName};{$hostname} и все заработало. Интересно почему в мануалах это не используется и об этом не написано???