2013-05-10 2 views
-1

исходного кода:выход проблема с PDO :: fetchall

<?php 
$dsn = 'mysql:dbname=oop;host=localhost;'; 
$user = 'admin'; 
$password = 'password'; 
try { 
$pdo = new PDO($dsn, $user, $password); 
} catch (PDOException $e) 
{ 
echo 'Connection failed: ' . $e->getMessage(); 
} 
$stmt = $pdo->prepare("select * from be_users"); 
$stmt->execute(); 
echo "<pre>"; 
print_r($stmt->fetchAll()); 
echo "</pre>"; 
?> 

результат:

Array 
(
    [0] => Array 
     (
      [username] => tom 
      [0] => tom 
      [email] => [email protected] 
      [1] => [email protected] 
     ) 

    [1] => Array 
     (
      [username] => tom3 
      [0] => tom3 
      [email] => [email protected] 
      [1] => [email protected] 
     ) 
    ... 

Вопрос:

Почему результат не нравится:

Array 
(
    [0] => Array 
     (
      [username] => tom 
      [email] => [email protected] 
     ) 

    [1] => Array 
     (
      [username] => tom3 
      [email] => [email protected] 
      ) 

ответ

0

Вы используете стиль выборки по умолчанию, который равен PDO::FETCH_BOTH, что означает, что вы получите массив, индексированный как численный, так и ассоциативный. Используйте PDO::FETCH_ASSOC вместо:

print_r($stmt->fetchAll(PDO::FETCH_ASSOC)); 

Вы найдете более подробную информацию о выборке стилей на странице руководства по PDOStatement::fetchAll()

Обратите внимание, что вы можете задать режим выборки каждого оператора или глобально за PDO Например:

$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); 
1
$dsn = "mysql:host=localhost;dbname=oop;charset=utf8"; 
$opt = array(
    PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC 
); 
$pdo = new PDO($dsn, $user, $password, $opt); 

обратите внимание на режим выборки

0

Вы должны Мануалы указать выборки стиль:

$stmt->fetchAll(PDO::FETCH_ASSOC); 
Смежные вопросы