奇怪的PDO结果返回每个行值的键

Nic*_*ars 1 php mysql pdo

尝试在一个非常简单的应用程序中获取一些数据库结果.

码

$pdo = new PDO("mysql:host=localhost;dbname=soundinsider", "root", "");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM users";
$query = $pdo->query($sql);

echo '<pre>';
print_r($query->fetchAll());
Run Code Online (Sandbox Code Playgroud)

这就是输出

Array
(
[0] => Array
    (
        [user_id] => 1
        [0] => 1
        [username] => simon
        [1] => simon
        [email] => madeup
        [2] => madeup

    )

[1] => Array
    (
        [user_id] => 2
        [0] => 2
        [username] => bobwin
        [1] => bobwin
        [email] => fake@email.com
        [2] => fake@email.com

    )

)
Run Code Online (Sandbox Code Playgroud)

所以似乎为每个结果创建了一个额外的密钥.当我在一两个月前编码时,情况并非如此.这里有什么问题或者这是现在的PDO行为吗?

gla*_*asz 5

这是可配置的行为:

$statement->fetchAll(PDO::FETCH_ASSOC)
Run Code Online (Sandbox Code Playgroud)

将返回关联数组 - 请参阅参数$fetch_style.

您可以配置您的pdo实例始终执行此操作:

$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

还存在PDOStatement::setFetchMode()使用重复的准备语句时,这是有用的.