PDOStatement::fetch — 从结果集中获取下一行(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)


说明

语法

  1. mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )

从一个 PDOStatement 对象相关的结果集中获取下一行。fetch_style 参数决定 POD 如何返回行。高佣联盟 www.cgewang.com


参数

fetch_style

控制下一行如何返回给调用者。此值必须是 PDO::FETCH_* 系列常量中的一个,默认为 PDO::ATTR_DEFAULT_FETCH_MODE 的值 (默认为 PDO::FETCH_BOTH )。

  • PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组

  • PDO::FETCH_BOTH(默认):返回一个索引为结果集列名和以0开始的列号的数组

  • PDO::FETCH_BOUND:返回 TRUE ,并分配结果集中的列值给PDOStatement::bindColumn() 方法绑定的 PHP 变量。

  • PDO::FETCH_CLASS:返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。如果 fetch_style 包含 PDO::FETCH_CLASSTYPE(例如:PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE),则类名由第一列的值决定

  • PDO::FETCH_INTO:更新一个被请求类已存在的实例,映射结果集中的列到类中命名的属性

  • PDO::FETCH_LAZY:结合使用 PDO::FETCH_BOTH 和 PDO::FETCH_OBJ,创建供用来访问的对象变量名

  • PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组

  • PDO::FETCH_OBJ:返回一个属性名对应结果集列名的匿名对象

cursor_orientation
对于 一个 PDOStatement 对象表示的可滚动游标,该值决定了哪一行将被返回给调用者。此值必须是 PDO::FETCH_ORI_* 系列常量中的一个,默认为 PDO::FETCH_ORI_NEXT。要想让 PDOStatement 对象使用可滚动游标,必须在用 PDO::prepare() 预处理SQL语句时,设置 PDO::ATTR_CURSOR 属性为 PDO::CURSOR_SCROLL。

offset
对于一个 cursor_orientation 参数设置为 PDO::FETCH_ORI_ABS 的PDOStatement 对象代表的可滚动游标,此值指定结果集中想要获取行的绝对行号。 
对于一个 cursor_orientation 参数设置为 PDO::FETCH_ORI_REL 的PDOStatement 对象代表的可滚动游标,此值指定想要获取行相对于调用 PDOStatement::fetch() 前游标的位置


返回值

此函数(方法)成功时返回的值依赖于提取类型。在所有情况下,失败都返回 FALSE 。


实例

用不同的提取方式获取行

  1. <?php
  2. $sth = $dbh->prepare("SELECT name, colour FROM fruit");
  3. $sth->execute();
  4.  
  5. /* 运用 PDOStatement::fetch 风格 */
  6. print("PDO::FETCH_ASSOC: ");
  7. print("Return next row as an array indexed by column name\n");
  8. $result = $sth->fetch(PDO::FETCH_ASSOC);
  9. print_r($result);
  10. print("\n");
  11.  
  12. print("PDO::FETCH_BOTH: ");
  13. print("Return next row as an array indexed by both column name and number\n");
  14. $result = $sth->fetch(PDO::FETCH_BOTH);
  15. print_r($result);
  16. print("\n");
  17.  
  18. print("PDO::FETCH_LAZY: ");
  19. print("Return next row as an anonymous object with column names as properties\n");
  20. $result = $sth->fetch(PDO::FETCH_LAZY);
  21. print_r($result);
  22. print("\n");
  23.  
  24. print("PDO::FETCH_OBJ: ");
  25. print("Return next row as an anonymous object with column names as properties\n");
  26. $result = $sth->fetch(PDO::FETCH_OBJ);
  27. print $result->NAME;
  28. print("\n");
  29. ?>

以上实例会输出:

  1. PDO::FETCH_ASSOC: Return next row as an array indexed by column name
  2. Array
  3. (
  4. [NAME] => apple
  5. [COLOUR] => red
  6. )
  7.  
  8. PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number
  9. Array
  10. (
  11. [NAME] => banana
  12. [0] => banana
  13. [COLOUR] => yellow
  14. [1] => yellow
  15. )
  16.  
  17. PDO::FETCH_LAZY: Return next row as an anonymous object with column names as properties
  18. PDORow Object
  19. (
  20. [NAME] => orange
  21. [COLOUR] => orange
  22. )
  23.  
  24. PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties
  25. kiwi

使用一个可滚动游标获取行

  1. <?php
  2. function readDataForwards($dbh) {
  3. $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
  4. try {
  5. $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
  6. $stmt->execute();
  7. while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
  8. $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
  9. print $data;
  10. }
  11. $stmt = null;
  12. }
  13. catch (PDOException $e) {
  14. print $e->getMessage();
  15. }
  16. }
  17. function readDataBackwards($dbh) {
  18. $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
  19. try {
  20. $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
  21. $stmt->execute();
  22. $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
  23. do {
  24. $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
  25. print $data;
  26. } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
  27. $stmt = null;
  28. }
  29. catch (PDOException $e) {
  30. print $e->getMessage();
  31. }
  32. }
  33.  
  34. print "Reading forwards:\n";
  35. readDataForwards($conn);
  36.  
  37. print "Reading backwards:\n";
  38. readDataBackwards($conn);
  39. ?>

以上实例会输出:

  1. Reading forwards:
  2. 21 10 5
  3. 16 0 5
  4. 19 20 10
  5.  
  6. Reading backwards:
  7. 19 20 10
  8. 16 0 5
  9. 21 10 5

PDOStatement::fetch的更多相关文章

  1. PDO和PDOStatement类常用方法

    PDO — PDO 类 PDO::beginTransaction — 启动一个事务 PDO::commit — 提交一个事务 PDO::__construct — 创建一个表示数据库连接的 PDO ...

  2. PDO获取数据的方法fetch()、fetchAll()、setFetchMode()、bindColumn()

    PDO的数据获取方法与其他数据库扩展都非常类似,只要成功执行SELECT查询,都会有结果集对象产生.不管是使用PDO对象中的query()方法,还是使用prepare()和execute()等方法结合 ...

  3. PHP PDO fetch() 详解

    环境:(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.1.0) PDOStatement::fetch — 从结果集中获取下一行 说明 PDOStatement ...

  4. PDO、PDOStatement、PDOException

    最近在学PDO  比较详细的资料 出处:http://blog.csdn.net/hsst027/article/details/23682003 PDO中包含三个预定义的类,它们分别是PDO.PDO ...

  5. PDOStatement::bindColumn

    PDOStatement::bindColumn — 绑定一列到一个 PHP 变量(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 bool PDOSta ...

  6. PDOStatement::fetchObject

    PDOStatement::fetchObject — 获取下一行并作为一个对象返回.(PHP 5 >= 5.1.0, PECL pdo >= 0.2.4)高佣联盟 www.cgewang ...

  7. php 基础代码大全(不断完善中)

    下面是基础的PHP的代码,不断完善中~ //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线 ...

  8. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  9. 前端学PHP之PDO预处理语句

    × 目录 [1]定义 [2]准备语句 [3]绑定参数[4]执行查询[5]获取数据[6]大数据对象 前面的话 本来要把预处理语句和前面的基础操作写成一篇的.但是,由于博客园的限制,可能是因为长度超出,保 ...

随机推荐

  1. 树莓派搭建Nexus2私服

    使用树莓派搭建Nexus2私服需要的材料有: 树莓派3B+(或者4B) 移动硬盘一个 1. 下载nexus2.x安装包 由于nexus2.x官方的启动环境并不支持arm架构的树莓派,所以这里采用tom ...

  2. 移动端web app要使用rem实现自适应布局:font-size的响应式

    关于webAPP的开发最主要解决的就是“自适应自适应布局”.常规的适配有很多做法,例如:流式布局.限死宽度等,但是这些方案都不是最佳的解决方法​,而最满足设计需要的是: 元素可以根据屏幕大小而等比列变 ...

  3. 我终于弄懂了Python的装饰器(一)

    此系列文档: 1. 我终于弄懂了Python的装饰器(一) 2. 我终于弄懂了Python的装饰器(二) 3. 我终于弄懂了Python的装饰器(三) 4. 我终于弄懂了Python的装饰器(四) 一 ...

  4. 【MySQL】Merge Index导致死锁

    水稻:最近有个朋友生产环境出现MySQL死锁问题,一听是死锁,那必须去看看啊,于是饶(si)有(qu)兴(huo)致(lai)的研究了好几天 菜瓜:MySQL死锁,赶紧分享一下 水稻:能否先让我装完X ...

  5. 有点愧疚,今天把unity官方骗了...

    今天下午2点,突然给我发了一封邮件说我违规: Unity Technologies Hello, Your Account: *@*.net has been suspended and you ca ...

  6. vue-cli3安装

    1.如果原来安装过vue-cli,需要先卸载,命令:npm uninstall vue-cli -g :这步如果出现问题,可能是npm 的全局路径被更改, 运行如下命令:npm config set ...

  7. sass-loader安装+Failed to resolve loader: sass-loader You may need to install it.解决方法

    方式一: 通过 cnpm 安装node-sass cnpm install node-sass --save 方式二: 通过npm 安装 1.安装sass-loader npm install sas ...

  8. JVM 专题九:运行时数据区(四)本地方法栈

    1. 本地方法栈 2. 什么是本地方法栈? Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用   本地方法栈,也是线程私有的. 允许被实现成固定或者是可动态拓展的内存大小 ...

  9. SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解

    SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...

  10. css 实现动态二级菜单

    动态实现简单的二级菜单 当鼠标放到一级标签上时,鼠标会变成小手的形状 展示二级菜单,源码如下,复制即可直接使用 <!DOCTYPE html> <html lang="en ...