Я новичок в 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