《细说PHP》第四版 样章 第18章 数据库抽象层PDO 1

现在,如果你已经能熟练地使用MySQL客户端软件来操作数据库中的数据,就可以开始学习如何使用PHP来显示和修改数据库中的数据了。PHP提供了标准的函数来操作数据库。在PHP 5以上的版本中可以使用MySQL和MySQLi两套扩展函数,MySQLi是PHP 5中新增的,是对MySQL扩展的改进。但由于历史遗留问题,很多老项目是在PHP 4时使用MySQL扩展开发的,如果在原有的项目上进行二次开发,或者找一些学习的例子,都要求开发人员会使用MySQL扩展函数。如果是新设计的项目,则推荐使用MySQLi扩展或本章中介绍的PDO技术。另外,PHP7全面删除了MySQL扩展函数支持。

18.1  PHP访问MySQL数据库服务器的流程

MySQL采用的是“客户机/服务器”体系结构。在前面的章节中我们一直使用命令行来远程管理MySQL数据库服务器,这种方式只适合DBA(数据库管理员)或程序开发人员等技术人员去管理数据库。能不能让一个不懂技术的普通用户去管理数据库呢?答案是肯定的,可以使用PHP脚本去处理数据库中的数据,则PHP充当了MySQL“客户机”的角色。因为通过PHP程序再结合一些前台技术开发的图形界面,就可以很轻松地管理数据库了,如图18-1所示为“客户机/服务器”两种体系结构的对比。

a0d0119a913143c3a1598864bab2110a.png

图18-1 “客户机/服务器”两种体系结构的对比

使用PHP和直接使用客户端软件访问MySQL数据库服务器,原理及操作步骤是相同的,如图18-1所示,都需要向MySQL管理系统发送SQL命令,而SQL命令的执行则由MySQL系统本身去处理,再将查询处理结果返给请求的用户。在PHP,中可以将SQL语句划分为两种情况去操作:一种是有返回结果集的,像“SELECT”及“DESC表名”等语句,执行完成后还要在PHP中处理查询结果;另一种则是在执行后没有结果集的,像DML(INSERT/ UPDATE/DELETE)、DDL(CREATE/DROP/ALTER)或“SET NAMES utf8”等语句。DML语句执行成功后会对数据表记录行有影响,是我们操作的重点;DDL语句则很少在PHP中使用。PHP访问MySQL数据库的流程如图18-2所示。

35a0fccfa23848e1808961d39bea5ed8.png

图18-2  PHP访问MySQL数据库的流程

从图18-2中可以看出,必须让PHP程序先连上MySQL数据库服务器,再选择一个数据库作为默认操作的数据库,才能向MySQL数据库管理系统发送SQL语句。如果发送的是INSERT、UPDATE或DELETE等SQL语句,MySQL执行完成并对数据表的记录有所影响,则说明执行成功。如果发送的是SELECT这样的SQL语句,则会返回结果集,还需要对结果集进行处理。处理结果集又包括获取字段信息和获取记录数据两种操作,而多数情况下只需要获取记录数据即可。脚本执行结束后还需要关闭本次连接。

PHP访问MySQL数据库服务器相对于PHP5、PHP7的变化之一是移除了MySQL扩展,推荐使用MySQLi或pdo_MySQL,实际上从PHP5.5开始,PHP就着手准备弃用MySQL扩展,如果你还在使用MySQL扩展,可能看到过这样的提示“Deprecated: MySQL_connect(): The MySQL extension is deprecated and will be removed in the future: use MySQLi or PDO instead in”。因此,在以后的程序中,为了保持兼容性,要尽量减少将MySQL扩展用于数据库连接。PDO(PHP Data Object)的出现让PHP达到了一个新的高度。PDO扩展类库为PHP访问数据库定义了一个轻量级、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据,这大大简化了数据库的操作,并能够屏蔽不同数据库之间的差异。使用PDO可以很方便地进行跨数据库程序的开发,以及不同数据库间的移植,是将来PHP在数据库处理方面的主要发展方向。

猜你喜欢

转载自www.cnblogs.com/itxdl/p/11375158.html