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脚本的10个技巧(6)
Oct 09 PHP
动态生成gif格式的图像要注意?
Oct 09 PHP
php中看实例学正则表达式
Dec 25 PHP
PHP初学者最感迷茫的问题小结
Mar 27 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
PHP PDO fetch 模式各种参数的输出结果一览
Jan 07 PHP
php实现遍历多维数组的方法
Nov 25 PHP
php for 循环使用的简单实例
Jun 02 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
详细解读php的命名空间(二)
Feb 21 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
JavaScript遍历求解数独问题的主要思路小结
2016/06/12 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
JS调用安卓手机摄像头扫描二维码
2018/10/16 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
Vue+webpack实现懒加载过程解析
2020/02/17 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
2020/04/07 Javascript
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
Python打印斐波拉契数列实例
2015/07/07 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
2015/10/25 Python
python 日志增量抓取实现方法
2018/04/28 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
会计系个人求职信范文分享
2013/12/20 职场文书
银行求职信范文
2014/05/26 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers