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 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
解析func_num_args与func_get_args函数的使用
Jun 24 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
stripos函数知识点实例分享
Feb 11 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
May 27 PHP
Laravel修改验证提示信息为中文的示例
Oct 23 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
PHP asXML()函数讲解
2019/02/03 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
微信小程序实现根据字母选择城市功能
2017/08/16 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
Python 初始化多维数组代码
2008/09/06 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python2与Python3的区别详解
2020/02/09 Python
spyder 在控制台(console)执行python文件,debug python程序方式
2020/04/20 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
如何将json数据转换为python数据
2020/09/04 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
小学二年级学生评语
2014/04/21 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
春节慰问信范文
2015/02/15 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书
四大名著读书笔记
2015/06/25 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书