php使用PDO获取结果集的方法


Posted in PHP onFebruary 16, 2017

本文实例讲述了php使用PDO获取结果集的方法。分享给大家供大家参考,具体如下:

fetch()方法

fetch()方法用于获取结果集的下一行,语法如下:

mixed PDOStatement::fetch([int fetch_style][,int cursor_orientation[,int cursor_offset]]])

参数fetch_style控制结果集的返回方式

PDO::FETCH_ASSOC -- 关联数组形式
PDO::FETCH_NUM -- 数字索引数组形式
PDO::FETCH_BOTH -- 两者数组形式都有,这是缺省的
PDO::FETCH_OBJ -- 按照对象的形式,类似于以前的 mysql_fetch_object()
PDO::FETCH_BOUND--以布尔值的形式返回结果,同时获取的列值赋给bindParam()方法中的指定变量。
PDO::FETCH_LAZY--以关联数组、数字索引数组和对象3种形式返回结果

cursor_orientation:PDOStatement对象的一个滚动游标,可用于获取指定的一行。
cursor_offset: 游标的偏移量

例如:

在PDO中通过预处理语句prepare()和execute()执行SQL查询语句,并且应用while()语句和fetch()方法完成数据的循环输出

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='password';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="select * from user";//需要执行的sql语句
$res=$pdo->prepare($query);//准备查询语句
$res->execute();
while($result=$res->fetch(PDO::FETCH_ASSOC)){
echo $result['id']." ".$result['username']." ".$result['password'].'<br>';
  }
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}

运行结果为:

1 107lab e10adc3949ba59abbe56e057f20f883e
4 admin 123456
5 admin 123456

fetchAll()方法

fetchAll()方法用于获取结果集中的所有行,其返回值是一个包含结果集中所有数据的二进制数组。语法如下:

array PDOStatement::fetchAll([int fetch_style[,int column_index]])

参数说明:

fetch_style:控制结果集中数据的显示方式。
column_index: 字段的索引。

例如:

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='password';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
$pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
$query="select * from user";//需要执行的sql语句
$res=$pdo->prepare($query);//准备查询语句
$res->execute();
$result=$res->fetchAll(PDO::FETCH_ASSOC);
print_r($result);
}catch(Exception $e){
die("Error!:".$e->getMessage().'<br>');
}

运行结果为: 

Array
(
  [0] => Array
    (
      [id] => 1
      [username] => 107lab
      [password] => e10adc3949ba59abbe56e057f20f883e
    )
  [1] => Array
    (
      [id] => 4
      [username] => admin
      [password] => 123456
    )
  [2] => Array
    (
      [id] => 5
      [username] => admin
      [password] => 123456
    )
)

此时可以通过foreach来遍历这个二维数组

foreach($result as $val){
echo $val['username'].'<br>';
}

运行结果为:

107lab
admin
admin

fetchColumn()方法

fetchColumn()方法获取结果集中下一行指定列的值,语法如下:

string PDOStatement::fetchColumn([int column_number])

可选参数column_number设置行中列的索引值,该值从0开始。如果省略该参数则将从第1列开始取值

例如:

通过fetchColumn()方法获取结果集中下一行中指定列的值。(或第一列id的值)

$dbms='mysql';//数据库类型
$dbName='admin';//使用的数据库
$user='root';//数据库连接用户名
$pwd='password';//数据库连接密码
$host='localhost';//数据库主机名
$dsn="$dbms:host=$host;port=3306;dbname=$dbName";
try{
  $pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
  $query="select * from user";//需要执行的sql语句
  $res=$pdo->prepare($query);//准备查询语句
  $res->execute();
  echo $res->fetchColumn(0).'<br>';
  echo $res->fetchColumn(0).'<br>';
  echo $res->fetchColumn(0).'<br>';
}catch(Exception $e){
  die("Error!:".$e->getMessage().'<br>');
}

运行结果为:

1
4
5

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP使用者状态管理功能的应用
Oct 09 PHP
PHP导入Excel到MySQL的方法
Apr 23 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
深入分析PHP设计模式
Jun 15 PHP
php提高脚本性能的4个技巧
Aug 18 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 #PHP
php实现PDO中捕获SQL语句错误的方法
Feb 16 #PHP
php中的单引号、双引号和转义字符详解
Feb 16 #PHP
php输出图像的方法实例分析
Feb 16 #PHP
替换php字符串中的单引号为双引号的方法
Feb 16 #PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 #PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 #PHP
You might like
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
解析Python中的异常处理
2015/04/28 Python
python实现自动发送报警监控邮件
2018/06/21 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python实现图片拼接的代码
2018/07/02 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
大学同学聚会邀请函
2014/01/19 职场文书
法人委托书范本
2014/04/04 职场文书
节约粮食标语
2014/06/18 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android
Mysql数据库group by原理详解
2022/07/07 MySQL