您的位置 首页 php

「原创」PHP实战-PDO

在PHP中可以通过三种方式连接数据库:mysql、mysqli、PDO。

Mysql是面向过程的,pdo是页面对象的。

PDO

简介

PDO(PHP数据对象) 是一个轻量级的、具有兼容接口的PHP数据库连接拓展,是一个PHP官方的PECL库,随PHP 5.1发布,需要PHP 5的面向对象支持,因而在更早的版本上无法使用。它所提供的数据接入抽象层,具有与具体数据库类型无关的优势,为它所支持的数据库提供统一的操作接口。

PHP
脚本代码
PDO
对象
SQL Server
扩展
MySQL
扩展
Oracle
扩展
SQLLite
扩展
SQL Server
数据库
MySQL
数据库
Oracle
数据库
其他数据库
SQLLite
数据库
其他数据库扩展

PDO的特点:

性能

PDO 从一开始就吸取了现有数据库扩展成功和失败的经验教训。因为 PDO 的代码是全新的,所以我们有机会重新开始设计性能,以利用 PHP 5 的最新特性。
PDO 旨在将常见的数据库功能作为基础提供,同时提供对于 RDBMS 独特功能的方便访问。

简单

PDO 旨在使您能够轻松使用数据库。API 不会强行介入您的代码,同时会清楚地表明每个函数调用的过程。

运行时可扩展

PDO 扩展是模块化的,使您能够在运行时为您的数据库后端加载驱动程序,而不必重新编译或重新安装整个 PHP 程序。例如,PDO_OCI 扩展会替代 PDO 扩展实现 oracle 数据库 API。还有一些用于 MySQL、PostgreSQL、ODBC 和 Firebird 的驱动程序,更多的驱动程序尚在开发。

安装

可以通过 PHP 的 phpinfo() 函数来查看是否安装了PDO扩展。

.在Windows安装PDO

PDO 和所有主要的驱动作为共享扩展随PHP一起发布,要激活它们只需简单地编辑 php.ini 文件,并添加以下扩展:

extension=php_pdo.dll(在PHP5的php.ini文件中对应此行)

extension=php_pdo_mysql.dll(在PHP7的php.ini文件中对应此行)

打开php.ini文件把相应行前的注释分号去掉即可开启此扩展,在修改php.ini文件后,需要重启PHP 或 Web服务器。

除此之外还有以下对应的各种数据库扩展:

;extension=php_pdo_firebird.dll

;extension=php_pdo_informix.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

;extension=php_pdo_oci8.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

;extension=php_pdo_sqlite.dll

创建PDO对象,并连通MySQL

PDO对象方法

1. Exec

执行insert、update、delete语句 ,返回受影响的行数(添加、修改或删除的记录数量)

Query

执行select语句,返回PDOStatement结果集对象(结果集就是记录的集合)

lastInsertId

获取insert语句插入记录的id值,是PDO对象的方法

setAttribute

bool PDO::setAttribute ( 属性名, 属性的值)

bool PDO::setAttribute ( int $attribute , mixed $value )

PDO::ATTR_DEFAULT_FETCH_MODE : 设置默认的提取模式(返回数组的类型),其取值如下:

PDO::FETCH_ASSOC :返回一个索引为结果集列名的数组

PDO::FETCH_BOTH (默认):返回一个索引为结果集列名和以0开始的列号的数组

PDO::FETCH_NUM :返回一个索引为以0开始的结果集列号的数组

PDOStatement

1. Fetch

从结果集中获取下一行。

fetchAll

fetchColumn

rowCount、columnCount

PDO错误处理模式

1. PDO::ERRMODE_SILENT 静默模式

在静默认模式下,SQL语句错误不会报告,是一种隐藏错误。PDO的默认错误处理模式是silent。

此模式为默认模式,PDO 将只简单地设置错误码,可使用 和 方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的 或 方法。如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法。

PDO::ERRMODE_WARNING 警告模式

PDO的警告模式,与PHP的E_WARNING模式一样。PHP的默认报错方式 ,就是警告模式。

PDO如果想使用警告模式,则必须自己设置。

除设置错误码之外,PDO 还将发出一条传统的 E_WARNING 信息。如果只是想看看发生了什么问题且不中断应用程序的流程,那么此设置在调试/测试期间非常有用。

PDO::ERRMODE_EXCEPTION 异常模式

异常报错模式,也需要手动设置。

除设置错误码之外,PDO 还将抛出一个 异常类并设置它的属性来反射错误码和错误信息。此设置在调试期间也非常有用,因为它会有效地放大脚本中产生错误的点,从而可以非常快速地指出代码中有问题的潜在区域(记住:如果异常导致脚本终止,则事务被自动回滚)。

异常模式另一个非常有用的是,相比传统 PHP 风格的警告,可以更清晰地构建自己的错误处理,而且比起静默模式和显式地检查每种数据库调用的返回值,异常模式需要的代码/嵌套更少。

PDO的异常处理

1. 异常处理语法

try{

正常的程序代码也可以是有问题的代码,

如果代码中有错误,会自动被异常类捕获,

当发生错误时,则会跳转到catch结构执行代码

}catch(异常类 异常类的对象){

通过异常类的相关方法,输出异常信息

}

PDOException 异常类

异常处理

PDO SQL语句预处理

PDO SQL语句预处理的步骤

第1步:制作相同结构的SQL

将SQL语句不同的数据部分,用参数或问号来代替。

第2步:将相同结构的SQL语句预编译

PDO::prepare

1. 功能:将相同结构的SQL语句预编译

1. 语法: public PDOStatement PDO::prepare ( string $statement )

第3步:将真正的数据与占位符绑定在一起

PDOStatement::bindValue

1. 功能:把一个值绑定到一个参数

1. 语法: bool PDOStatement::bindValue ( mixed $parameter , mixed $value )

第4步:执行预处理语句

PDOStatement::execute

1. 功能:执行一条预处理语句

1. 语法: bool PDOStatement::execute ( void )

事务

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的,由用户程序的执行所引起,并用形如 begin transaction end transaction 语句(或函数调用)来界定。事务由事务开始( begin transaction )和事务结束( end transaction )之间执行的全体操作组成。

我们可以将若干条语句(假设10条语句)放在begin tansaction和end transaction之间,从而构成一个事务,当这10条语句全部执行成功时,则执行完毕,当10条语句中有1条语句或几条语句执行失败时,则事务会自动回滚,会自动撤销已执行语句所做出的更改。

1. 概念

例如:在中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

特性

事务是恢复和的基本单位。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID特性

· 原子性(atomicity)

一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

· 一致性(consistency)

事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

· 隔离性(isolation)

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

· 持久性(durability)

持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

文章来源:智云一二三科技

文章标题:「原创」PHP实战-PDO

文章地址:https://www.zhihuclub.com/152277.shtml

关于作者: 智云科技

热门文章

网站地图