PDO::FETCH_ASSOC 是 PHP PDO 数据库扩展中的一个常量,用于指定数据获取方式。其返回结果和特性如下:
返回数据类型
返回一个关联数组(associative array),数组的键名对应数据库查询结果中的列名(字段名),键值对应列值。例如查询SELECT id, name FROM users会返回类似这样的结构:
[ ['id' => 1, 'name' => 'Alice'], ['id' => 2, 'name' => 'Bob'] ]
与其他获取方式的对比
PDO::FETCH_NUM:返回数字索引数组(键为列序号)PDO::FETCH_BOTH:同时包含关联键和数字键(默认模式)PDO::FETCH_OBJ:返回匿名对象,通过$row->column访问典型使用场景
$stmt = $pdo->query("SELECT * FROM products");
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); // 获取所有结果行底层实现原理
PDO 驱动层会将数据库原生结果集(如 MySQL 的二进制协议结果)转换为 PHP 的 HashTable 结构,列名作为哈希键名存储,此过程发生在pdo_stmt_fetch函数调用时。注意事项
列名大小写取决于数据库配置(MySQL 通常为小写)
若 SQL 使用别名(如
SELECT id AS product_id),数组键名会同步变化性能略优于
FETCH_BOTH,因无需构建数字索引