php pdo(二)
定义:PDO(PHP Data Object)是PHP5才支持的扩展,它为PHP访问各种数据库定义了一个轻量级的、一致性的接口。
PDO是PHP5中的一个重大功能,PHP6中将只默认使用PDO来处理数据库。而我们将通过PDO来统一对各种数据库执行查询和获取数据等操作
PHP PDO->query() 查询数据记录并返回查询结果
PDO->query()
PDO->query() 用于查询数据记录并返回查询结果。
语法:
PDO->query()
PDO->query() 用于查询数据记录并返回查询结果。 语法:PDO->query( string statement )例子:
<?php //构造PDO连接 $dbh = "mysql:host=localhost;dbname=test"; $db = new PDO($dbh, 'root', 'root123'); $db->query("set character set 'gbk'"); //查询数据 $sql = "SELECT * FROM user"; $sth = $db->query($sql); while($row = $sth->fetch()){ echo "用户名:".$row['username']."<br />"; echo "电子邮件:".$row['email']."<br />"; echo "注册日期:".date("Y-m-d", $row['regdate'])."<br /><br />"; } $db = null; ?>在上面的例子中,我们仿照 MySQL 教程章节的查询例子,用 PDO 的方式对 user 表进行查询操作。
PDOStatement->fetch()
PDO 中的 fetch() 方法用于从结果集中获取一行结果,该方法行为类似 mysql_fetch_array() ,不同的是该方法不仅返回数组,还可返回对象。
语法:
PDOStatement->fetch(int mode)mode 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。
取值 | 说明 |
---|---|
PDO::FETCH_ASSOC | 关联索引(字段名)数组形式 |
PDO::FETCH_NUM | 数字索引数组形式 |
PDO::FETCH_BOTH | 默认,关联及数字索引数组形式都有 |
PDO::FETCH_OBJ | 按照对象的形式 |
PDO::FETCH_BOUND | 通过 bindColumn() 方法将列的值赋到变量上 |
PDO::FETCH_CLASS | 以类的形式返回结果集,如果指定的类属性不存在,会自动创建 |
PDO::FETCH_INTO | 将数据合并入一个存在的类中进行返回 |
PDO::FETCH_LAZY | 结合了 PDO::FETCH_BOTH、PDO::FETCH_OBJ,在它们被调用时创建对象变量 |
PDOStatement->setFetchMode()
如果不在 fetch() 中指定返回的结果类型,也可以单独使用 setFetchMode() 方法设定,如:
...... $sth = $db->query($sql); $sth->setFetchMode(PDO::FETCH_ASSOC); while($row = $result->fetch()){ ...... }
PDOStatement->fetchAll()
fetchAll() 方法用于把数据从数据集一次性取出并放入数组中。
语法:
PDOStatement->fetchAll([int mode [,int column_index]])
mode 为可选参数,表示希望返回的数组,column_index 表示列索引序号,当 mode 取值 PDO::FETCH_COLUMN 时指定。
取值 | 说明 |
---|---|
PDO::FETCH_COLUMN | 指定返回返回结果集中的某一列,具体列索引由 column_index 参数指定 |
PDO::FETCH_UNIQUE | 以首个键值下表,后面数字下表的形式返回结果集 |
PDO::FETCH_GROUP | 按指定列的值分组 |
例子:
$sth = $db->query($sql); $row = $sth->fetchAll(); //只返回 username(index=1) $row = $sth->fetchAll(PDO::FETCH_COLUMN, 1); //将 username GROUP 返回(注:由于表中 username 无重复记录,因此本例无意义) $row = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1);
PDO->query( string statement )
例子:
<?php //构造PDO连接 $dbh = \"mysql:host=localhost;dbname=test\"; $db = new PDO($dbh, \'root\', \'root123\'); $db->query(\"set character set \'gbk\'\"); //查询数据 $sql = \"SELECT * FROM user\"; $sth = $db->query($sql); while($row = $sth->fetch()){ echo \"用户名:\".$row\[\'username\'\].\"<br />\"; echo \"电子邮件:\".$row\[\'email\'\].\"<br />\"; echo \"注册日期:\".date(\"Y-m-d\", $row\[\'regdate\'\]).\"<br /><br />\"; } $db = null; ?>
在上面的例子中,我们仿照 MySQL 教程章节的查询例子,用 PDO 的方式对 user 表进行查询操作。
PDOStatement->fetch()
PDO 中的 fetch() 方法用于从结果集中获取一行结果,该方法行为类似 mysql_fetch_array() ,不同的是该方法不仅返回数组,还可返回对象。
语法:
PDOStatement->fetch(int mode)
mode 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。
取值 | 说明 |
---|---|
PDO::FETCH_ASSOC | 关联索引(字段名)数组形式 |
PDO::FETCH_NUM | 数字索引数组形式 |
PDO::FETCH_BOTH | 默认,关联及数字索引数组形式都有 |
PDO::FETCH_OBJ | 按照对象的形式 |
PDO::FETCH_BOUND | 通过 bindColumn() 方法将列的值赋到变量上 |
PDO::FETCH_CLASS | 以类的形式返回结果集,如果指定的类属性不存在,会自动创建 |
PDO::FETCH_INTO | 将数据合并入一个存在的类中进行返回 |
PDO::FETCH_LAZY | 结合了 PDO::FETCH_BOTH、PDO::FETCH_OBJ,在它们被调用时创建对象变量 |
PDOStatement->setFetchMode()
如果不在 fetch() 中指定返回的结果类型,也可以单独使用 setFetchMode() 方法设定,如:
...... $sth = $db->query($sql); $sth->setFetchMode(PDO::FETCH_ASSOC); while($row = $result->fetch()){ ...... }
PDOStatement->fetchAll()
fetchAll() 方法用于把数据从数据集一次性取出并放入数组中。
语法:
PDOStatement->fetchAll(\[int mode \[,int column_index\]\])
mode 为可选参数,表示希望返回的数组,column_index 表示列索引序号,当 mode 取值 PDO::FETCH_COLUMN 时指定。
取值 | 说明 |
---|---|
PDO::FETCH_COLUMN | 指定返回返回结果集中的某一列,具体列索引由 column_index 参数指定 |
PDO::FETCH_UNIQUE | 以首个键值下表,后面数字下表的形式返回结果集 |
PDO::FETCH_GROUP | 按指定列的值分组 |
例子:
$sth = $db->query($sql); $row = $sth->fetchAll(); //只返回 username(index=1) $row = $sth->fetchAll(PDO::FETCH_COLUMN, 1); //将 username GROUP 返回(注:由于表中 username 无重复记录,因此本例无意义) $row = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP, 1);
php pdo(二)的更多相关文章
- php的mysql\mysqli\PDO(二)mysqli
原文链接:http://www.orlion.ga/1147/ mysqli有面向对象风格和面向过程风格,个人感觉还是用面向对象风格比较好(毕竟是面向对象) 1.mysqli::_construct( ...
- 我了个大擦-PDO(二)
hi 昨天又213了,虽然有室友3点多才睡觉的客观影响,但是昨晚不想学东西是本质原因.今天搞起.打算3.4天之内,学完PDO和AJAX这两个,还望大家没事儿来骂骂我,免的我又偷懒. 1.PDO 二.P ...
- PDO的一些操作
一.实例化一个PDO对象 //实例化一个PDO对象//1,设置数据源相关参数$dbms = 'mysql';$host = '127.0.0.1';$port = '3306';$dbname = ' ...
- PDO 小知识
一.前言 PDO(PHP Data Object)提供了一个通用接口访问多种数据库,即抽象的数据模型支持连接多种数据库. PDO扩展为PHP定义了一个访问数据库的轻量.持久的接口.其本身并不能实现任何 ...
- MySql数据库3【优化1】表的优化
一.表结构的优化 1.标准化 标准化是在数据库中组织数据的过程.其中包括,根据设计规则创建表并在这些表间建立关系:通过取消冗余度与不一致相关性,该设计规则可以同时保护数据并提高数据的灵活性.通常数据 ...
- SQL注入漏洞篇
一篇SQL注入漏洞汇总,更新中-- 如有缺陷 望大佬指正 SQL注入产生的原因? 当程序执行逻辑时没有对用户输入的参数做过滤处理,使参数直接与后台数据库产生逻辑交互,即SQL注入黑客就可以利用各种SQ ...
- 11.7 (下午)开课二个月零三天 (PDO)
PDO访问方式操作数据库 mysqli是专门访问MySQL数据库的,不能访问其它数据库.PDO可以访问多种的数据库,它把操作类合并在一起,做成一个数据访问抽象层,这个抽象层就是PDO,根据类操作对 ...
- PDO 学习与使用 ( 二 ) PDO 数据提取 和 预处理语句
以数据库 msg 为例,说明 PDO 的数据提取.预处理语句: mysql> show tables;+---------------+| Tables_in_msg |+----------- ...
- PDO操作mysql数据库(二)
从 MySQL 数据库读取数据 <?php $server = "localhost"; $user = "root"; $pwd = "123 ...
随机推荐
- JVM最多可创建多少线程
JVM可支持的最大线程数 JVM最大线程数 (2012-07-04 23:20:15) 转载▼ 标签: jvm 最大线程数 it 分类: java分布式总结 摘自:http://sesame.itey ...
- NSRect
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- PHP工程师面临成长瓶颈
作为开发中应用最广泛的语言之一,PHP有着大量的粉丝,那么你是一名优秀的程序员吗?在进行自我修炼的同时,你是否想过面对各种各样的问题,我该如何突破自身的瓶颈,以便更好的发展呢?PHP工程师面临成长瓶颈 ...
- Hibernate--基本映射标签和属性介绍
一.映射文件的基本结构举例: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiberna ...
- Mongodb查询的用法,备注防止忘记
最近在用这个东西,为防止忘记,记下来. 集合简单查询方法 mongodb语法:db.collection.find() //collection就是集合的名称,这个可以自己进行创建. 对比sql语句 ...
- System,Integer,Calendar,Random和容器
System 1)arraycopy int[] a = {1.2.3.4}; int[] b = new int[5]; System.arraycopy(a,1,b,3,2); //把数组a中从下 ...
- android完全退出应用程序
android 完全退出应用程序android android 退出应用程序, 单例模式管理Activity引自:http://www.yoyong.com/archives/199android 退 ...
- Codeforces 383A - Milking cows
原题地址:http://codeforces.com/problemset/problem/383/A 题目大意:有 n 头奶牛,全部看着左边或者右边,现在开始给奶牛挤奶,给一头奶牛挤奶时,所有能看到 ...
- PHP适合做大型网站吗?
1. 对递归的不良支持 递归是一种函数调用自身的机制.这是一种强大的特性可以把某些复杂的东西变得很简单.有一个使用递归的例子是快速排序(quicksort).不幸的是,PHP并不擅长递归.Zeev,一 ...
- Android Studio 我常用快捷键
0. Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类 1. 重载方法 Ctrl+O 2.Ctrl+shift+Enter:自动匹配相对应的语法结构,比如if,do-while,t ...