PDO数据库抽象层

一、php,ini文件配置

要启用PDO,首先必须加载"extension=php_pdo.dll",如果想其支持某个具体的数据库,那么还要加载对应的数据库选项。如支持MySQL数据库,则还需要加载"extension=php_pdo_mysql.dll"。

二、PDO构造函数

语法:_construct(string $dsn[, string $username[, string $password[, array $driver_options]]])

参数:

  • dsn:数据源名称,包括主机名端口号和数据库名称
  • username:连接数据库的用户名
  • password:连接数据库的密码
  • driver_options:连接数据库的其他选项
header("content-type:text/html;charset=utf8");
$dbms="mysql";
$dbName="db_database";
$user="root";
$pwd="";
$host="localhost";
$dsn="$dbms:host=$host;dbname=$dbName";
try{
    $pdo=new PDO($dsn, $user, $pwd);
    echo "PDO连接MySQL成功。";
}catch(Exception $e){
    echo $e->getMessage()."<br>";
}

三、PDO中执行SQL语句

1. exec() 方法

语法:int PDO::exec(string statement)

参数:statement是要执行的SQL语句。该方法返回执行SQL语句时受影响的行数,通常用于INSERT、DELETE和UPDATE语句中。

2. query() 方法

语法:PDOStatement PDO::query(string statement)

扫描二维码关注公众号,回复: 2697876 查看本文章

参数:statement是要执行的SQL语句。它返回的是一个PDOStatement对象

3. 预处理语句--prepare()和execute()

预处理语句包括prepare()和execute()两种方法。首先通过prepare()方法做查询的准备工作,然后,通过execute()方法执行查询。同时还可以通过bindParam()方法来绑定参数提供给execute()方法。

语法:PDOStatement PDO::prepare(string statement[, array driver_options])

           bool PDOStatement::execute([array input_parameters])

4. PDO中获取结果集

- fetch()方法:获取结果集中的下一行数据

语法:mixed PDOStatement::fetch([int fetch_style[, int cursor_orientation[, int cuisor_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对象
$pdo=new PDO($dsn, $user, $pwd);
$query = "select * from database";
$result = $pdo->prepare($query);
$result->execute();
while($res=$result->fetch(PDO::FETch_ASSOC)){
    ...
}

- fetchAll() 方法:获取结果集中的所有行,返回值是一个包含结果集中所有数据的二维数组。

语法:array PDOStatement::fetchAll(int fetch_style[, int column_index]])

参数:fetch_style,控制结果集中数据的返回方式

column_index,字段的索引

- fetchColunm() 方法,获取结果集中下一行指定列的值

语法:string PDOStatement::fetchColumn([int column_number])

参数:column_number设置行中列的索引值,该值从0开始,如果删除该值则从第一列开始取值。

四、PDO中捕获SQL语句中的错误

1. 使用默认模式--PDO::ERRMODE_SILENT

在默认模式中设置PDOStatement对象的errorCode属性,但不进行其他任何操作。

通过prepare() 和 execute() 方法向数据库中添加数据,设置PDOStatement对象的errorCode属性,手动检测代码中的错误。

2. 使用警告模式-- PDO::ERRMODE_WARNING

警告模式会产生一个PHP警告,并设置errorCode属性。如果设置的是警告模式,那么除非明确地检测错误代码,否则程序将继续按照其方式运行。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

3. 使用异常模式-- PDO::ERRMODE_EXCEPTION

异常模式会创建一个PDOException,并设置errorCode属性。它可以将执行代码封装到一个try{...}catch{...}语句块中。

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)

五、PDO中错误处理

1. errorCode() 方法,获取操作数据库句柄时所发生的错误代码,这些错误代码被称为SQLSTATE代码。返回一个SQLSTATE代码,是由5个数字和字母组成的。

语法:int PDOStatement::errorCode(void);

2. errorInfo() 方法,用于获取操作数据库句柄时所发生的错误信息。返回值为一个数组,她包含了相关的错误信息。

语法:array PDOStatement::errorInfo(void);

六、PDO中事务处理

1. 开启事务- beginTransaction() 方法

beginTransaction()方法将关闭自动提交(autocommit)模式,知道事务提交或者回滚以后才恢复。、

2. 提交事务 - commit() 方法

commit() 方法完成事务的提交操作,成功返回true,否则返回false。

3. 事务回滚 - rollBack() 方法

rollBack() 方法执行事务的回滚操作。

猜你喜欢

转载自blog.csdn.net/loren_123/article/details/81427828