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

18.9  管理表books实例

在Web项目中,几乎所有模块都要和数据表打交道,而对表的管理无非就是增、删、改、查等操作,所以熟练掌握对表进行管理的这些常见操作是十分有必的。本例为了能更好地展示PDO的应用,并没有将数据表的操作封装成一个数据库操作类,而是采用了过程化的编写方式,用最直接的方式实现。

18.9.1  需求分析

本例主要的目标是实现对图书信息表books的管理过程,包括添加图书、修改图书、删除图书、遍历图书列表、搜索图书等操作。创建数据表books的SQL语句如下所示。

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

创建后,表的结构信息和具体的需求说明如下所示。

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

(1)在主页面上可以通过简单的菜单,获取添加图书表单、图书列表和搜索图书3个选项按钮,默认页面中显示所有图书的列表。

(2)添加图书的功能包括:录入图书名称、出版社名称、图书作者、图书价格及图书介绍,上架时间可通过获取当前系统时间进行添加,还需要上传图书的封面图片。

(3)图书列表只需要显示图书编号、图书名称、图书图片、出版社名称、图书作者、图书价格和上架时间,还要使用分页技术限制每页显示10条记录,并且每条记录都有修改和删除的操作入口。

(4)修改图书通过图书列表的入口进入修改图书,和添加图书表单界面相似,并通过传递的图书ID获取要修改图书的全部内容,填到对应的表单项中。如果有新图书的封面图片上传,还要将原图片删除。

(5)搜索图书可以指定多个搜索条件,包括图书名称、图书作者、出版社名称和图书价格范围,也可以指定其中的一个或多个作为筛选条件进行搜索,并且搜索的结果列表和图书列表是相同的,并能提示搜索的条件。当通过分页进入其他页面时,也要保持同样的搜索结果。

(6)删除图书也在图书列表中进行,为每条记录设置一个删除按钮。删除成功要返回图书列表,并且保持在当前页面中。如果是搜索结果列表,删除一条记录后还要保持原列表的状态。另外,删除一条记录的同时也要删除图书封面图片,防止产生永远也访问不到的垃圾图片。

注意:在上传图片时,需要通过缩放控制图片尺寸在一定的范围内,同时添加水印。

18.9.2  程序设计

根据需求,本例共需要4个可操作的模板,分别为添加图书表单、修改表单、表单及图书列表,需要在单独的文件中各自独立声明,并且所有的操作都需要提交给一个控制文件去处理,连接数据库和函数库也需要作为公共资源在独立的文件中声明。图书表管理需要声明的文件及描述如表18-8所示。

表18-8  图书表管理需要声明的文件及描述

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

所有图书列表,以分页形式显示所有图书记录,同时也是搜索结果的列表页面

在index.php脚本中,需要提供进入添加图书表单、显示图书列表和搜索图书表单三个入口的链接,默认以分页形式显示全部的图书列表。另外,该脚本也可作为图书管理的控制器文件,用户的每个操作都需要提交给该脚本进行处理,并通过GET方法提交的 action 变量区分用户的动作。脚本index.php的代码如下所示:

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

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

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

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

添加图书表单是通过单击主页面中的链接入口,并在index.php脚本中通过action=add导入添加图书表单脚本文件add.inc.php的。代码如下所示:

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

在添加表单中录入图书信息后,提交给index.php脚本,并通过action=insert辨别用户的操作。添加数据前,先通过导入conn.inc.php文件,创建PDO对象并与数据库建立连接,再将表单中通过POST方法提交的数据组合成INSERT语句,通过PDO发送给MySQL,然后添加到表books中。脚本conn.inc.php的代码如下所示:

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

另外,添加和修改图书时需要上传图书封面图片,并缩放图片尺寸至指定的范围,还要为其添加水印。同时,也需要制作一个图标文件,作为图片列表显示。图片缩放和加水印的操作,借助前面章节中介绍的FileUpload和Image类完成。将上传的处理过程声明在函数库文件func.inc.php中,代码如下所示:

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

修改图书表单是通过单击图书列表记录中的链接入口,并在index.php脚本中通过action=mod导入修改表单脚本文件mod.inc.php完成的。录入需要修改的内容后再提交给index.php处理,通过action=update辨别用户的操作。代码如下所示:

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

搜索图书表单是通过单击主页面中的链接入口,并在index.php脚本中通过action=ser导入搜索图书表单脚本文件ser.inc.php完成的。录入需要搜索的内容后再提交给index.php处理,通过action=list辨别用户的操作,代码如下所示:

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

主页面中默认显示图书列表,也可以通过单击主页面中的链接入口进行图书列表显示,删除一本图书成功以后还要回到图书列表页面,搜索图书的处理和显示结果是同一个图书列表。在脚本list.inc.php中处理和显示图书列表,代码如下所示:

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

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

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

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

借助前面介绍的Page类来完成图书列表分页显示。删除一条记录后,还可以确保回到当前作的页面。数据表books管理的演示结果如图18-12所示。

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

图18-12  数据表books管理的演示结果

18.10  小结

本章必须掌握的知识点

Ø PDO的安装。

Ø 创建PDO对象。

Ø 使用PDO的错误处理模式。

Ø PDO对预处理的操作方式。

Ø 事务处理。

Ø 分页类。

Ø 图书管理实例。

本章需要了解的内容

Ø 使用PDO执行SQL语句的方式[xec()和query()方式]

Ø 大数据对象的存取。

Ø PDO中常见的一些常量。

本章需要拓展的内容

Ø 用PDO访问其他数据库。

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

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

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

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

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

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

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

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

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

上一篇:《细说PHP》第四版 样章 第18章 数据库抽象层PDO 2


下一篇:Java整型与字符串相互转换(转)