因为这段时间工作比较忙 所以很长时间没有更新技术博客了。 在这段时间学习到了很多以前没有接触过的东西。下面就来介绍一下数据库抽象层PDO的使用:
PDO(PHP Data Objects)是一个轻量级的PHP扩展,提供了一个数据访问抽象层。还要就是PDO只能在PHP5.0以上版本使用。
下面来介绍一下PDO常用的预定义常量:
PDO::PARAM_BOOL (integer) 表示布尔数据类型
PDO::PARAM_NULL (integer) 表示数据类型为NULL的SQL
PDO::PARAM_INT (integer) 表示为integer数据类型的SQL
PDO::PARAM_STR (integer) 表示为char varchar 或者其他字符串的数据类型的SQL
PDO::PARAM_LOB (integer) 表示对象数据类型的SQL
PDO::FETCH_LAZY (integer) 指定的获取方式,应当返回结果集的每一行作为一个对象的变量名,对应于它的字段名
PDO::FETCH_ORI_NEXT (integer) 取结果集的下一行
PDO::FETCH_ORI_PRIOR (integer) 取结果集的前面的行
PDO::FETCH_ORI_FIRST (integer) 取结果集的第一行
PDO::FETCH_ORI_LAST (integer) 取结果集的最后一行
PDO::ATTR_PERSISTENT (integer) 创建一个持久连接,而不是新创建一个连接
PDO的基本用法:
使用PDO与数据库连接(这里只使用MySQL):
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
?>
下面的代码是对MySQL连接错误时的处理:
2 try {
3 $dbh = new PDO( ' mysql:host=localhost;dbname=test ' , $user , $pass );
4 foreach ( $dbh -> query( ' SELECT * from FOO ' ) as $row ) {
5 print_r ( $row );
6 }
7 $dbh = null ;
8 } catch (PDOException $e ) {
9 print " Error!: " . $e -> getMessage() . " <br/> " ;
10 die ();
11 }
12 ?>
下面是两个重复使用插入语句的例子:
$stmt = $dbh -> prepare( " INSERT INTO REGISTRY (name, value) VALUES (:name, :value) " );
$stmt -> bindParam( ' :name ' , $name );
$stmt -> bindParam( ' :value ' , $value );
// insert one row
$name = ' one ' ;
$value = 1 ;
$stmt -> execute();
// insert another row with different values
$name = ' two ' ;
$value = 2 ;
$stmt -> execute();
?>
$stmt = $dbh -> prepare( " INSERT INTO REGISTRY (name, value) VALUES (?, ?) " );
$stmt -> bindParam( 1 , $name );
$stmt -> bindParam( 2 , $value );
// insert one row
$name = ' one ' ;
$value = 1 ;
$stmt -> execute();
// insert another row with different values
$name = ' two ' ;
$value = 2 ;
$stmt -> execute();
?>
对数据库进行查询操作:
$stmt = $dbh -> prepare( " SELECT * FROM REGISTRY where name = ? " );
if ( $stmt -> execute( array ( $_GET [ ' name ' ]))) {
while ( $row = $stmt -> fetch()) {
print_r ( $row );
}
}
?>