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入门学习知识点四 PHP正则表达式基本应用
Jul 14 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
Jun 14 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
Jun 21 PHP
修改apache配置文件去除thinkphp url中的index.php
Jan 17 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
php通过各种函数判断0和空
Jul 04 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
php使用yield对性能提升的测试实例分析
Sep 19 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缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
php实现粘贴截图并完成上传功能
2015/05/17 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
关于文本限制字数的js代码
2007/04/02 Javascript
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
javascript数组排序汇总
2015/07/07 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
AngularJS 中ui-view传参的实例详解
2017/08/25 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
python 地图经纬度转换、纠偏的实例代码
2018/08/06 Python
33个Python爬虫项目实战(推荐)
2019/07/08 Python
python用quad、dblquad实现一维二维积分的实例详解
2019/11/20 Python
Python for i in range ()用法详解
2020/09/18 Python
django项目中新增app的2种实现方法
2020/04/01 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
学生个人求职自荐信格式
2013/09/23 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
Python机器学习之底层实现KNN
2021/06/20 Python
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android
Python中第三方库Faker的使用详解
2022/04/02 Python