PDO :: FETCH_ASSOC Не возвращает правильные столбцы таблицы - PullRequest
0 голосов
/ 07 октября 2011

Я новичок в PHP и сейчас занимаюсь разработкой небольшого веб-приложения. Ниже приведен тестовый код для запроса БД с использованием PDO:

try 
{
    $dsn = "mysql:host=localhost;dbname=auction";
    $opt = array(
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"
    );
    $pdo = new PDO($dsn, 'root', 'password', $opt);
}

catch(PDOException $e)
{
    echo $e->getMessage();
}

$stmt = $pdo->query("SELECT id,username,password,name,level FROM users");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$test = $stmt->fetchALL();
print_r($test);

Вывод указанного кода следующий:

Array ( [0] => Array ( [id] => 1 [username] => admin [users] => Administrator [auction] => 0 ) 
        [1] => Array ( [id] => 2 [username] => jodel [users] => Jodel Ross [auction] => 1 ) ) 

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

Более того, если я использовал PDO :: FETCH_NUM, правильное количество полей и соответствующие данные возвращаются правильно, как показано ниже:

Array ( [0] => Array ( [0] => 1 
                       [1] => admin 
                       [2] => 21232f297a57a5a743894a0e4a801fc3 
                       [3] => Administrator 
                       [4] => 0 )
        [1] => Array ( [0] => 2 
                       [1] => jodel_ross 
                       [2] => 2cdaeb5df4cf941d9c5650591cba1fdc 
                       [3] => Jodel Ross, Jr. 
                       [4] => 1 ) ) 

Пожалуйста, помогите, мне нужно понять, почему, и я нашел ответы в Интернете и не нашел ни одного. Спасибо.

Development environment:
Windows 7 x64
PHP 5.3.6 
Mysql 5.5 
Apache 2.0.64 
Zend Framework 1.11

1 Ответ

1 голос
/ 23 ноября 2011

Все еще существует открытая ошибка с Zend Framework 1.x, PHP 5.3.x и setFetchMode (), и именно поэтому она не работает должным образом.

см. http://framework.zend.com/issues/browse/ZF-10866и http://framework.zend.com/issues/browse/ZF-3470

Пожалуйста, проголосуйте за закрытие этой ошибки или отправьте патч.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...