首页 > 编程笔记 > PHP笔记 阅读:2

PHP PDO fetch()用法详解(附带实例)

使用 query() 方法执行 SQL 语句后,返回的结果是 PDOStatement 类对象。通过 PDOStatement 类对象可以对结果集进行处理,常用的处理结果集的方法有 fetch()、fetchColumn() 和 fetchAll()。

fetch() 方法用于从结果集中获取下一行数据,基本语法格式如下:
PDOStatement::fetch ( 
int $mode = PDO::FETCH_DEFAULT,                 // 返回方式(可选参数)
int $cursorOrientation =  PDO::FETCH_ORI_NEXT,  // 可滚动游标(可选参数)
int $cursorOffset =                         // 游标的偏移量(可选参数)
)
在上述语法格式中:
$mode 的值必须是 PDO::FETCH_* 系列常量中的一个,$mode 的可选值如下表所示:

表:$mode的可选值
可选值 说明 返回值
PDO::FETCH_ASSOC 以关联数组的方式提取结果集中的数据 每一行的数据将被返回为一个关联数组,其中键是列名,值是对应的数据值
PDO::FETCH_NUM 以索引数组的方式提取结果集中的数据 每一行的数据将被返回为一个索引数组,其中索引从 0 开始,值为对应的数据值
PDO::FETCH_BOTH 同时以关联数组和索引数组的方式提取结果集中的数据 每一行的数据将被返回为一个混合数组,其中既包含字符串键名也包含数字键名,即每个列名对应两个键名
PDO::FETCH_OBJ 以匿名对象的方式提取结果集中的数据 每一行的数据将被返回为一个匿名对象,其中属性名对应列名,属性值对应数据值
PDO::FETCH_LAZY 以延迟加载的方式提取结果集中的数据,只有在访问数据时才会从数据库中取出 在访问数据时,会返回一个包含该行数据的对象,对象的属性名对应列名,属性值对应数据值
PDO::FETCH_BOUND 将结果集中的列值分配给 PDOStatement::bindColumn() 方法绑定的变量 返回 true,并分配结果集中的列值给 PDOStatement::bindColumn() 方法绑定的 PHP 变量
PDO::FETCH_CLASS 将结果集中的数据映射为指定请求类的实例 返回一个请求类的实例,其中的属性会被赋值为结果集中对应的列值
PDO::FETCH_INTO 将结果集中的数据映射为指定被请求类的实例 返回一个被请求类已存在的实例,其中命名的属性会被赋值为结果集中对应的列

下面演示如何使用 fetch() 方法处理结果集。创建 pdo02.php 文件,使用 fetch() 方法获取查询的数据,具体代码如下:
<?php
$dsn = 'mysql:host=localhost;port=3306;dbname=myframe;charset=utf8mb4';
$pdo = new PDO($dsn, 'root', '123456');
$sql = 'SELECT `id`, `name` FROM `student` LIMIT 2';
$res = $pdo->query($sql);
while ($row = $res->fetch(PDO::FETCH_ASSOC)) {
    echo $row['id'] . ' - ' . $row['name'] . '<br>';
}
在上述代码中:
上述代码的运行结果为:

1 - Allen
2 - James

相关文章