技术开发 频道

用PHP的PEAR DB模块编写数据库脚本

  【IT168 技术文档】本文首先对PEAR DB模块进行了简单介绍,然后详细讲解了使用PEAR DB模块来编写数据库脚本的方法,最后给出了在移植脚本时的各种注意事项。

  一、PEAR DB模块简介

  作为主流的Web编程语言,PHP在编写使用数据库的脚本方面做了大量的简化工作,因为现在的动态web页面越来越多地需要访问后端的数据库内容,尤其是当我们需要为访问者提供即时信息的时候。然而,虽然PHP易于使用,但是却没有包含通用的数据库访问接口,相反,对于每种数据库系统它都提供了不同的一种函数作为接口。例如,MySQL有一组函数接口,InterBase有另一组函数接口,而PostgreSQL也有它自己的函数接口。

  PHP之所以流行,是与它支持广泛的数据库引擎分不开的,因为这给人们提供了更多的选择余地。另一方面,由于不同的数据库使用不同的一组函数接口,所以移植PHP脚本的时候,必须对源代码做相应的修改。举例来说,用于提交SQL语句的函数可能是mysql_query()、ibase_query()或者pg_exec(),这要看您使用的是MySQL、InterBase或者PostgreSQL数据库。所以,当我们的脚本移植到其他类型的数据库引擎上的时候,或者从使用不同数据库引擎的人那里获得了有关的脚本的时候,必须对这些函数名进行相应的修改。

  但是自从PHP 4及更高版本后,这个问题已经可以通过PEAR中的一个数据库模块解决了。此PEAR DB模块支持一个两级体系结构的数据库访问:

  • 上层提供了一个抽象接口,用以隐藏特定数据库的细节,所以,对于PEAR DB支持的所有数据库而言,脚本开发者无需考虑使用哪一组函数了。
  • 下层由一些不同的驱动程序构成。每个驱动程序支持一个特定的数据库引擎,并将脚本开发者使用的抽象接口转换成数据库引擎对应的专用数据库接口。这提高了编程的灵活性,因为开发者无需考虑使用的是哪种数据库引擎的接口函数,从而隐去了很多不必要的细节。

  这些主要得益于这种体系结构所提供的抽象数据库接口。实际上,这种体系结构已经被应用于多种编程语言,例如Perl和Ruby语言中的DBI,Python语言的DB-API,Java语言的JDBC数据库访问接口等。然而,PEAR是包含在PHP发行版本中的,并且是默认安装的,所以对于较新的PHP版本,我们可以直接使用它,根本不用考虑安装问题。

  PEAR DB使用类和对象来表示面向对象的接口,所以,如果您对PHP的面向对象的程序设计还不太熟悉的话,请参考PHP手册的有关内容。

  PEAR DB体系结构主要通过两个用于所有的数据库引擎的文件以及一个特定于某个数据库引擎的文件来提供对数据库的支持的:

  • DB.php文件实现了创建数据库连接对象的DB类,并提供了一些实用例行程序。
  • DB/common.php实现了DB_common类,该类是数据库访问的基础。这个文件还包含了一些实现默认数据库访问方法和其它实用例行程序的公共代码。这些默认的方法会在后面根据需要换成特定驱动程序有关的方法。
  •  第三个文件包含驱动程序,它是根据您所选择的数据库而定的。每个驱动程序文件都有一个类似于DB/driver.php这样的名字,并实现了名为DB_driver的一个类,该类是从基类DB_common派生的。就MySQL而言,实际上有两个驱动程序,一个实现了对PHP扩展MySQL的支持,另一个实现了对PHP扩展mysqli的支持。DB/mysql.php实现类DB_mysql,它继承自DB_common,并提供了针对MySQL服务器的一些访问方法。这个驱动程序会访问mysql_xxx()函数。DB/mysql.php从PHP 5开始提供。它与之类似,但是实现的是DB_mysqli类,并且访问mysqli_xxx()函数。

  上面这些文件都可以在您的安装目录下面找到。通常情况下,一个脚本只会引用DB.php来获得对DB类的访问。然后,当您调用DB类的connect()方法来连接到数据库服务器的时候,这个类会确定您想使用哪种类型的服务器,并读取相应的驱动程序文件。随后,这个驱动程序文件又会引入DB/common.php。这个与Perl或者Ruby DBI 脚本仅仅引用顶层的DBI模块非常类似;我们需要的具体的低层驱动程序石油顶层的模块提供的connect()方法来确定的,我们不用操心。

0
相关文章