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 相关文章推荐
提取HTML标签
Oct 09 PHP
phpMyAdmin 安装配置方法和问题解决
Jun 08 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
PHP使用Mysql事务实例解析
Sep 08 PHP
浅析php创建者模式
Nov 25 PHP
php中get_defined_constants函数用法实例分析
May 12 PHP
你应该知道PHP浮点数知识
May 13 PHP
php去掉文件前几行的方法
Jul 29 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
PHP中用Trait封装单例模式的实现
Dec 18 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
浅析PHP的ASCII码转换类
2013/07/05 PHP
php中call_user_func函数使用注意事项
2014/11/21 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
python读取LMDB中图像的方法
2018/07/02 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
深入了解Django中间件及其方法
2019/07/26 Python
Python操作Sonqube API获取检测结果并打印过程解析
2019/11/27 Python
python时间time模块处理大全
2020/10/25 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
房产代理公证处委托书
2014/04/04 职场文书
技术合作协议书范本
2014/04/18 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
活动简报范文
2015/07/22 职场文书
小学科学课教学反思
2016/02/23 职场文书
如何写一份具有法律效力的借款协议书?
2019/07/02 职场文书
Mysql systemctl start mysqld报错的问题解决
2021/06/03 MySQL