PDO基础

PDO(PHP Data Object),数据库访问抽象层,统一各种数据库的访问接口。

PDO特性:编码一致性、灵活性、高性能、面向对象特性。

PDO只是一个抽象的接口层,本身并不能操作数据库。

PDO基础

一、PDO安装与配置

1.配置PHP配置文件,开启相应扩展 extension = php_pdo.dll

2.开启响应数据库扩展 extension = php_pdo_mysql.dll

3.通过查看phpinfo可以看到PDO扩展的详细信息

二、PDO连接数据库

1.通过参数的形式连接数据库【建议】

     PDO基础

    *$dsn为所要连接数据库的数据源。如果连接成功会返回数据库对象对象。

2.通过URI形式连接数据库

    PDO基础

3.通过配置文件形式连接数据库【不推荐】

三、PDO对象的方法

1.exec() --执行一条SQL语句,并返回其受影响的行数,如果没有返回0,对select没有作用

2.query()--执行一条 语句,返回一个PDOStatement 对象【执行select】

3.prepare()--准备要执行的SQ L语句,返回PDOStatement 对象

预处理语句有两种占位符

*$sql = "select s* from user where username = :username";//第一种占位符

$stmt = $pdo->prepare($sql);

$stmt->execute(array(":username"=>$username));//传参

*$sql="select * from user where username=?";//第二种占位符

$stmt = $pdo->prepare($sql);

$stmt->execute(array($username));//传参

4.execute()—执行一条预处理的语句。【statement方法】

5.quote()--返回一个添加引号的字符串,用于SQL语句中【过滤字符串中的特殊字符可以防止sql注入】【但是不推荐】

    $username = $pdo -> quote($username);

6.lastInsertId()返回最后插入行的ID

7.setAttribute()设置数据库连接属性

8.getAttribute()得到数据库连接的属性

9.errorCode()获取跟数据库句柄上一个操作相关的SQLSTATE

10.errorInfo()获取跟数据库柄上一次操作的错误信息【数组】

四、PDOSatement的方法

1.fetch()—得到结果集中的一条记录【索引+关联】

2.fetchAll()—得到结果集中所有记录以二维数组形式

    * setFetchMode()语句要放在execute()之后—设置返回记录的形式

3.rowCount()—得到受影响的条数或者查询到的信息

4. bindParam — 绑定一个参数到指定的变量名

    $stmt->bindParam(":username",$username,POD:PARAM_STR);

    $stmt->bindParam(1,$username,POD:PARAM_STR);

5. bindValue --绑定一个固定变量值到一个参数【方法 bindParam() 和 bindValue() 非常相似,唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值。】

6. bindColumn-- 绑定一个列到指定的PHP变量

    

7.columnCount()—返回结果集中的列数

8.fetchColumn()—从结果集中的下一行返回单独的一列【没有办法返回同一行的另外一列】

9. debugDumpParams — 打印一条 SQL 预处理命令

10. nextRowset — 在一个多行集语句句柄中推进到下一个行集

    PDO基础

五、PDO错误处理模式

1、PDO::ERRMODE_CLIENT静默模式『默认』

2、PDO::ERRMODE_WARNING警告模式

3、PDO::ERRMODE_EXCEPTION异常模式『推荐』

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

六、PDO事务处理【原子性,一致性,独立性,持久性】

PDO基础

*$options = array(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交

PDO基础