PDO
类似于,mysql扩展,也是一种操作mysql服务器的方式。5.1版本后PHP发行,并随着PHP的发展,PHP认为PDO才是操作数据的合理方式。开始逐渐摒弃mysql扩展,为什么呢:PHP开始逐渐模块化,封装规范操作。
开启PDO对MySQL的支持
php.ini
PDO初用
先来段代码,后面会有做解释。
以下 是PHP手册中PDO操作类的查询位置:
PDO基础操作
实例化PDO对象
PDO上所有的操作,都需要从PDO对象上开启!一般需要4个参数
一:数据源名称:DSN。Data Source Name。用于表示,我们的数据的来源。例如:
第一个mysql 标示数据库类型
host : 数据库地址
port : 端口号
dbname: 数据库名称
二:用户名
三:密码
四:数据库选项,在连接数据库服务器后,做的初始化工作。
其中,最常用的就是:
在PDO中,所有的属性(选项)都是采用语义化的常量表示的。及MYSQL_ATTR_INIT_COMMAND只是PHP中类型码的语义化常量,在PHP编译中会把他转成类型码执行(这么做方便用户执行)。
PDO::MYSQL_ATTR_INIT_COMMAND,MySQL的初始化命令的属性
当实例化完,PDO对象时,PDO就自动完成数据库连接!
你只需要做的操作
$pdo = new PDO($dsn,$username,$password,$options);
执行SQL(结构化查询语言)
PDO对象的方法:
结果集对象 = query():查询类,select,show,desc
受影响的记录数 = exec():非查询类,insert,update,delete,表操作,库操作
用于,完成执行SQL。
只要是执行失败(SQL出错),都返回false!
查询类:如果是查询类,会先返回一个结果集。这个结果集表示执行的结果,下面会说
非查询类:
操作结果集对象 (PDOStatement)
为了获取最终的数据!
使用结果集对象(PDOStatement)上定义的方法来完成
典型的方式:
获取全部数据
二维数组 = fetchAll(); //全部的结果集
一维数组 = fetch() //结果集的第一行
字符串数据 = fetchColumn();//结果集第一行的第一个数据
可以在 fetchAll和fetch中使用参数:
PDO::FETCH_ASSOC, POD::FETCH_NUM, PDO::FETCH_BOTH
的方式,获取,关联数组,索引数组,两者都!
如下图
fetchAll();
fetch();
fetchColumn();
PDO对象的常用方法
$pdo->query();
查询结果集,返回的是结果集对象(PDOStatement)
$pdo->exec();
返回受影响行数
$pdo->errorCode();
错误状态码
$pdo->errorInfo()
错误信息数组(包含错误状态码,消息码,消息字符串)。
错误状态码可以查询手册获得其信息
比较经常使用的PDO方法
$pdo->lastInsertID();
用来获取 最新生成的(只有增加的时候) auto_increment的字段的值。最新的ID!
$pdo->Quote()
转义数据,并使用引号包裹!(防止SQL注入)
因此,在使用PDO执行SQL时,应该使用上面的方法,将数据进行转义处理,防止SQL注入(SQL-injection)
$pdo->beginTransaction();
开启事务
$pdo->rollback();
回滚事务
$pdo->commit();
提交事务
$pdo->inTransaction();
判断是否处于事务中!