尝试获取一些数据库会导致一个非常简单的应用程序。
法典
$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());
这就是输出的内容
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
)
)
因此,似乎为每个结果创建了一个额外的密钥。一两个月前我编码时情况并非如此。这里有什么问题还是现在的PDO行为?
这是
可配置的行为:
$statement->fetchAll(PDO::FETCH_ASSOC)
将返回关联数组 -- 请参阅参数 $fetch_style
。
您可以将 PDO 实例配置为始终执行以下操作:
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
还有PDOStatement::setFetchMode()
,这在使用重复的预准备语句时很有用。
如果您查看手册,您会发现fetchAll
默认同时返回关联索引和数字索引 - 我建议您改用fetch
并设置关联返回。