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 相关文章推荐
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
php 问卷调查结果统计
Oct 08 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
PHP curl模拟登录带验证码的网站
Nov 30 PHP
详解PHP的Yii框架中自带的前端资源包的使用
Mar 31 PHP
CI框架支持$_GET的两种实现方法
May 18 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
利用php做服务器和web前端的界面进行交互
Oct 31 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 PHP
PHP基于ip2long实现IP转换整形
Dec 11 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
一个基于PDO的数据库操作类
2011/03/24 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
PHP的mysqli_rollback()函数讲解
2019/01/23 PHP
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
Javascript 之封装(Package)
2018/09/14 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
React手稿之 React-Saga的详解
2018/11/12 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python中的匿名函数使用简介
2015/04/27 Python
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
学习雷锋标语
2014/06/25 职场文书
企业读书活动总结
2014/06/30 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
企业介绍信范文
2015/01/30 职场文书
海上钢琴师观后感
2015/06/03 职场文书
新学期开学标语2015
2015/07/16 职场文书
公司仓库管理制度
2015/08/04 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
python批量创建变量并赋值操作
2021/06/03 Python