定义: pdo(php data object)是php5才支持的扩展,它为php访问各种数据库定义了一个轻量级的、一致性的接口。 pdo是php5中的一个重大功能,php6中将只默认使用pdo来处理数据库。而我们将通过pdo来统一对各种数据库执行查询和获取数据等操作 php pdo-query()
定义: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 )
例子:
query(set character set 'gbk'); //查询数据 $sql = select * from user; $sth = $db->query($sql); while($row = $sth->fetch()){ echo 用户名:.$row['username'].
; echo 电子邮件:.$row['email'].
; echo 注册日期:.date(y-m-d, $row['regdate']).
; } $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 )
例子:
query(\set character set \'gbk\'\); //查询数据 $sql = \select * from user\; $sth = $db->query($sql); while($row = $sth->fetch()){ echo \用户名:\.$row\[\'username\'\].\
\; echo \电子邮件:\.$row\[\'email\'\].\
\; echo \注册日期:\.date(\y-m-d\, $row\[\'regdate\'\]).\
\; } $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);