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学习 运算符与运算符优先级
Jun 15 PHP
PHP DataGrid 实现代码
Aug 12 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
PHP错误和异长常处理总结
Mar 06 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
Sep 29 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
浅谈PHP链表数据结构(单链表)
Jun 08 PHP
关于PHP定时发送服务的解决办法
Apr 23 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 缓冲的免费实现方法
2006/10/09 PHP
php采用curl实现伪造IP来源的方法
2014/11/21 PHP
PHP+jQuery+Ajax实现用户登录与退出
2015/04/27 PHP
自动更新作用
2006/10/08 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
itchat接口使用示例
2017/10/23 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
np.random.seed() 的使用详解
2020/01/14 Python
python实现图片横向和纵向拼接
2020/03/05 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
COS美国官网:知名服装品牌
2019/04/08 全球购物
捷克多品牌在线时尚商店:ANSWEAR.cz
2020/10/03 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
教师校本培训方案
2014/02/26 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
初三英语教学计划
2015/01/23 职场文书
社区端午节活动总结
2015/02/11 职场文书
太行山上观后感
2015/06/05 职场文书
紧急迫降观后感
2015/06/15 职场文书
廉洁自律证明
2015/06/24 职场文书
高中生军训感言
2015/08/01 职场文书
小学生红领巾广播稿
2015/08/19 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
AJAX实现省市县三级联动效果
2021/10/16 Javascript