PDO(PHP Data Object),数据库访问抽象层,统一各种数据库的访问接口。
PDO特性:编码一致性、灵活性、高性能、面向对象特性。
PDO只是一个抽象的接口层,本身并不能操作数据库。
一、PDO安装与配置
1.配置PHP配置文件,开启相应扩展 extension = php_pdo.dll
2.开启响应数据库扩展 extension = php_pdo_mysql.dll
3.通过查看phpinfo可以看到PDO扩展的详细信息
二、PDO连接数据库
1.通过参数的形式连接数据库【建议】
????
????*$dsn为所要连接数据库的数据源。如果连接成功会返回数据库对象对象。
2.通过URI形式连接数据库
????
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错误处理模式
1、PDO::ERRMODE_CLIENT静默模式『默认』
2、PDO::ERRMODE_WARNING警告模式
3、PDO::ERRMODE_EXCEPTION异常模式『推荐』
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
六、PDO事务处理【原子性,一致性,独立性,持久性】
*$options = array(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交