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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
一个简单计数器的源代码
Oct 09 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
PHP header函数分析详解
Aug 06 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
PHP递归实现层级树状展开
Apr 01 PHP
smarty自定义函数用法示例
May 20 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
PHP接入微信H5支付的方法示例
Oct 28 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 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.MVC的模板标签系统(三)
2006/09/05 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
2019/03/21 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
javascript模块化简单解析
2016/04/07 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
JavaScript类的写法
2016/09/17 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
Python实现读取并保存文件的类
2017/05/11 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
解释一下ArrayList Vector和LinkedList的实现和区别
2013/04/26 面试题
单位消防安全制度
2014/01/12 职场文书
申请任职学生会干部自荐书范文
2014/02/13 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
小学运动会开幕词
2015/01/28 职场文书
高一作文之乐趣
2019/11/21 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
Vue实现动态查询规则生成组件
2021/05/27 Vue.js