PHP PDOStatement::fetch讲解


Posted in PHP onJanuary 31, 2019

PDOStatement::fetch

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

说明

语法

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

从一个 PDOStatement 对象相关的结果集中获取下一行。fetch_style 参数决定 POD 如何返回行。

参数

fetch_style

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

  • _PDO::FETCHASSOC :返回一个索引为结果集列名的数组
  • _PDO::FETCHBOTH (默认):返回一个索引为结果集列名和以0开始的列号的数组
  • _PDO::FETCHBOUND :返回 TRUE ,并分配结果集中的列值给PDOStatement::bindColumn() 方法绑定的 PHP 变量。
  • _PDO::FETCHCLASS :返回一个请求类的新实例,映射结果集中的列名到类中对应的属性名。如果 fetch_style 包含 PDO::FETCH_CLASSTYPE(例如: _PDO::FETCH_CLASS | PDO::FETCHCLASSTYPE ),则类名由第一列的值决定
  • _PDO::FETCHINTO :更新一个被请求类已存在的实例,映射结果集中的列到类中命名的属性
  • _PDO::FETCHLAZY :结合使用 _PDO::FETCHBOTH 和 _PDO::FETCHOBJ ,创建供用来访问的对象变量名
  • _PDO::FETCHNUM :返回一个索引为以0开始的结果集列号的数组
  • _PDO::FETCHOBJ :返回一个属性名对应结果集列名的匿名对象

cursor_orientation

  • 对于 一个 PDOStatement 对象表示的可滚动游标,该值决定了哪一行将被返回给调用者。此值必须是 PDO::FETCHORI* 系列常量中的一个,默认为 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 。

实例

用不同的提取方式获取行

<?php
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();
/* 运用 PDOStatement::fetch 风格 */
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");
print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");
print("PDO::FETCH_LAZY: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");
print("PDO::FETCH_OBJ: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");
?>

以上实例会输出:

PDO::FETCH_ASSOC: Return next row as an array indexed by column name
Array
(
  [NAME] => apple
  [COLOUR] => red
)
PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number
Array
(
  [NAME] => banana
  [0] => banana
  [COLOUR] => yellow
  [1] => yellow
)
PDO::FETCH_LAZY: Return next row as an anonymous object with column names as properties
PDORow Object
(
  [NAME] => orange
  [COLOUR] => orange
)
PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties
kiwi

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

<?php
function readDataForwards($dbh) {
 $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY BET';
 try {
  $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
  $stmt->execute();
  while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
   $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
   print $data;
  }
  $stmt = null;
 }
 catch (PDOException $e) {
  print $e->getMessage();
 }
}
function readDataBackwards($dbh) {
 $sql = 'SELECT hand, won, bet FROM mynumbers ORDER BY bet';
 try {
  $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
  $stmt->execute();
  $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST);
  do {
   $data = $row[0] . "\t" . $row[1] . "\t" . $row[2] . "\n";
   print $data;
  } while ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR));
  $stmt = null;
 }
 catch (PDOException $e) {
  print $e->getMessage();
 }
}
print "Reading forwards:\n";
readDataForwards($conn);
print "Reading backwards:\n";
readDataBackwards($conn);
?>

以上实例会输出:

Reading forwards:
21    10    5
16    0     5
19    20    10
Reading backwards:
19    20    10
16    0     5
21    10    5

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
php 字符过滤类,用于过滤各类用户输入的数据
May 27 PHP
php 操作调试的方法
Jul 12 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
php函数式编程简单示例
Aug 08 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 PHP
PHP PDOStatement::execute讲解
Jan 31 #PHP
PHP PDOStatement::errorInfo讲解
Jan 31 #PHP
PHP PDOStatement::errorCode讲解
Jan 31 #PHP
PHP PDOStatement::columnCount讲解
Jan 30 #PHP
PHP PDOStatement::closeCursor讲解
Jan 30 #PHP
PHP PDOStatement::debugDumpParams讲解
Jan 30 #PHP
PHP PDOStatement::bindValue讲解
Jan 30 #PHP
You might like
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
解决jQuery插件tipswindown与hintbox冲突
2010/11/05 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
js中方法重载如何实现?以及函数的参数问题
2013/08/01 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
总结js函数相关知识点
2018/02/27 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
跟老齐学Python之Python文档
2014/10/10 Python
使用graphics.py实现2048小游戏
2015/03/10 Python
详细探究Python中的字典容器
2015/04/14 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
程序员机试试题汇总
2012/03/07 面试题
目标责任书范本
2014/04/16 职场文书
书香家庭事迹材料
2014/05/09 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
城南旧事读书笔记
2015/06/29 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
Python学习之os包使用教程详解
2022/03/21 Python
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript