PDO
PDO
PDO PHP Data Object(php数据对象)
就是别人已经封装好的一类,我们来学习如何使用。
PDO原理
加载PDO
在新版本的PHP中不需要加载PDO,即可以使用PDO类
查看:phpinfo();
开启PDO所支持的数据库
PDO简介
PDO类
PDO类主要提供对数据库的连接操作,及SQL执行
__construct()构造函数
$dsn DataSourceName 数据源名
格式:
数据库类型: mysql
主机: host:locahost
端口 port:3306
数据库名 dbname:所连接的数据库
字符集 charset:utf8
$dsn = "mysql:host=主机名;port=端口号;dbname=数据库名;charset=字符集"
示例:
$dsn = "mysql:host=localhost;port=3306;dbname=php;charset=utf8";
$user 用户名
$pwd 密码
操作数据库的步骤:
1、连接
2、设置字符集
3、选择数据库
示例:
执行sql
query() 执行sql的方法 主要用于select语句
返回值是PDOStatement
exec() 执行sql的方法 主要用于增、删、改
示例:
PDOStatement对象,主要用于接收PDO对数据库的sql操作
此对象的作用,封装了对数据库操作的返回信息。
此不需创建,由pdo的sql执行语句,自动返回此对象
删除操作
示例:
rowcount()方法,返回所有受影响的行数 相当于mysql_affected_rows()
添加操作
示例:
PDO对象->lastInsertId();
修改操作:
查询操作
查询的操作的返回值也被封装在PDOStatment对象中,通过此对象的方法来获取数据。
fetch(); 主要用于返回一行记录,默认返回的是一个关联+索引元素
控制返回数组类型的参数(PDO的一个类中常量)
PDO::FETCH_BOTH (默认)返回的是一个关联+索引
PDO::FETCH_NUM 返回一个索引数据
PDO::FETCH_ASSOC 返回是一个关联数组
PDO::FETCH_OBJ 返回一个stdClass的对象,将结果集中的数据作为该对象的属性
PDO::FETCH_CLASS 返回的是一个类的对象
示例1:
示例2:
fetchAll() 一次获取所有的记录
示例:
fetchObject('类名');
类必须存在
获取错误信息:
pdo对象的方法
errorCode 返回的是一个错误信息的代码
errorInfo() 返回的是一个错误信息的数组,信息在下标2中
示例:
PDOException异常类
主要用于记录PDO的错误,但是以对象思想进行处理。
异常: 异常是错误的一种,可以控制,比如程序中逻辑中的问题,异常出现在,执行过程。
错误:硬件错误,操作系统错误,程序是无法控制的
异常的语法:
PHP中可以对异常进行try(检测)、throw(抛出)、catch(捕获),在try指定的代码进检测异常,如果遇到异常抛出错误提示信息,由与try对应的catch进行获取此错误信息。
try{
//所检测的代码段
【throw new exception('信息信息')】
}catch(PDOException $e){
//输出错误信息
}
示例:
PDOException类,前是必须开启PDO异常模式,通过PDO的常量,来设置
PDO相关常量(pdo类中的属性)
主要用于设置PDO的结果集信息、错误信息、异常处理信息。
对PDO属性的操作
getAttribute(); 主要用于获取PDO类的属性(常量)
setAttribute(); 主要用于设置PDO类的属性
属性:
PDO::ATTR_ERRMODE 主要用于设置错误的处理方式
取值:
PDO::ERRMODE_SILENT 不显示错误
PDO::ERRMODE_NATURAL 默认的
PDO::ERRMODE_EXCEPTION 走异常模式
PDO::ATTR_AUTOCIMMIT 事务的模式
取值:1 0
PDO::ATTR_CASE 主要用于设置结果集关联数组的形式
取值:
PDO::CASE_UPPER 键名大写
PDO::CASE_LOWER 键小写
示例:
PDO预处理
1、创建预处理
变化的SQL
POD自己设计一种占位符 :变量名
2、设置变量
通过execute()方法为占位符绑定数据
bindValue("占位符",值或变量);
bindParam("占位符",变量);
说明:
都是用于为预处理绑定数据
bindValue对占位符的传递是值的形式传递的
bindParam对占位符的传递是地址的形式传递
bindParam只需对占位符绑定一次即可。每次变量的值更改后,会自动将值重新绑定点给相应的占位符
PDO的事务
beginTransaction();
commit();
rollback();
exec("save point 回滚点");
示例: