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 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。

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 时指定。

mode 参数可取值如下:
取值 说明
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 为可选参数,表示希望返回的结果集类型,默认为关联及数字索引共有的数组形式。

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 时指定。

mode 参数可取值如下:
取值 说明
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(二),布布扣,bubuko.com

时间: 2024-08-05 07:32:10

php pdo(二)的相关文章

php的mysql\mysqli\PDO(二)mysqli

原文链接:http://www.orlion.ga/1147/ mysqli有面向对象风格和面向过程风格,个人感觉还是用面向对象风格比较好(毕竟是面向对象) 1.mysqli::_construct() mysqli::__construct ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $

我了个大擦-PDO(二)

hi 昨天又213了,虽然有室友3点多才睡觉的客观影响,但是昨晚不想学东西是本质原因.今天搞起.打算3.4天之内,学完PDO和AJAX这两个,还望大家没事儿来骂骂我,免的我又偷懒. 1.PDO 二.PDO对象的使用(二) 2.2 错误信息 errorCode()——错误号: errorInfo()——错误信息: 举个栗子 <?php/* * PDO错误信息 */ $pdo=new PDO('mysql:host=localhost;dbname=imooc','root',''); $pdo->

linux下编译安装配置php5.6.30过程

在第一次编译安装php5.6.30失败后,参考了http://www.phpworld.cn/system/php/11.html的一些内容,第二次编译安装成功,特此记录过程. 一.编译安装php5.6.30 安装环境: # cat /etc/redhat-release  CentOS release 6.8 (Final) # /application/nginx/sbin/nginx -v nginx version: nginx/1.6.3 下载php5.6.30安装包 wget htt

MySql数据库3【优化1】表的优化

一.表结构的优化 1.标准化  标准化是在数据库中组织数据的过程.其中包括,根据设计规则创建表并在这些表间建立关系:通过取消冗余度与不一致相关性,该设计规则可以同时保护数据并提高数据的灵活性.通常数据库标准化是让数据库设计符合某一级别的范式,通常满足第三范式即可.也有第四范式(也称为 Boyce Codd范式,BCNF))与第五范式存在,但是在实际设计中很少考虑.忽视这些规则可能使得数据库的设计不太完美,但这不应影响功能.     标准化的特点: 1) 所有的“对象”都在它自己的table中,没

php pdo 简单使用 (二)

通过上一节内容 php pdo 简单使用(一)了解了链接的创建和简单的操作. 通过 pdo 有三种方式执行sql语句: exec, query, prepared statement 1. exec() 函数适用于执行一次sql 操作,并且不适用于select语句 参见:http://php.net/manual/zh/pdo.exec.php 2. query() 函数适用于执行一次sql操作,并且在下一次query之前要fetch 出所有的结果否则执行将会失败 参见:http://php.n

PDO进行sql语句预处理和操作结果集详细介绍(二)

<span style="font-size:18px;">一:预处理语句及其绑定参数执行insert try { $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456"); }catch(PDOException $e){ echo $e->getMessage(); } /* pdo中有两种占位符号 * * ? 参数 ---

PDO类基本应用二

思考:在MySql中,有一种事务功能,能够帮助实现哪些需要多个步骤操作,然后一次性完成的,那么PDO中是如何实现的呢? 引入:其实,事务操作本质上是一种SQL操作,也就是说利用前面所说的写操作(事务都是写操作),就可以实现,而在PDO中,当然也提供 了一定的封装来实现这个功能,从而避免了一些简单的固定SQL执行的操作 PDO事务功能[了解] 定义:PDO事务功能,并非PDO额外多出了一项功能,而是将原来MySql所支持的事务操作进行了一定的封装实现.注意:事务执行是否成功是由MySql对应的存储

PHP PDO学习(二) exec执行SQL

exec 在一个单独的函数调用中执行一条 SQL 语句,返回受此语句影响的行数. exec 不会处理select语句 <?php try { $pdo = new PDO('mysql:host=localhost:3306;dbname=zhy', 'root', 'root'); $sql = <<<EOF CREATE TABLE IF NOT EXISTS USERS( ID INTEGER AUTO_INCREMENT KEY, USERNAME VARCHAR(20)

数据库的事务处理---PDO实现

事务处理用一句简单的术语称为"原子操作",即一件事情,要么全部完成,要么一个也别完成:有一种一荣俱荣,一损俱损的感觉. 最常用的就是在交易过程中,比如在网络中,甲方付费给乙方,钱确认付款,但是乙方并未确认收款,那么,甲方的账户并不会减少,乙方的账户也并不会增加. 只有当甲方确认付款,乙方确认收款,两个步骤都完成,并且不出现错误的时候,双方的账户才会改变 看代码也许更好理解 1 <?php 2 try{ 3 $pdo=new PDO("mysql:host=localho