六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 842|回复: 0

PEAR DB将数据库工作简化

[复制链接]

升级  15.33%

17

主题

17

主题

17

主题

秀才

Rank: 2

积分
73
 楼主| 发表于 2013-1-30 01:41:07 | 显示全部楼层 |阅读模式
有经验的PHPer应该对PEAR*都不会陌生,不过对新手来说,简单的练习PEAR应该不必派上用场,不过在开始接触复杂的编程时,PEAR对PHPer来说可以说是一个很有效的工具。到底什么是PEAR我这里不详细讨论了,因为答案都在pear.php.net,不过这里得介绍一个很好用的工具 -- DB,这是一个以PEAR为基础的数据库抽象层;虽然PHP已经有内建的数据库函式,不过功能有限,而且不容易转移平台。例如通常连接MySQL的函式是mysql_connect(),而PostgreSQL则是pg_connect(),虽然你大可将mysql_[x]改成pg_[x],不过如果你的数据库抽象层的源码超过500行的话这将是一个恶梦!如果你的数据库函式是散布在你的源码,那就更恐怖了。所以,这时候需要有一个跨平台的数据库界面抽象层来为你完成大部分的工作,包括连接,query,update等等,而且还需要提供debug的功能。PEAR DB正是一个这样的工具,提供多种平台包括dbase, Frontbase, InterBase, Informix, MiniSQL, MSSQL, MySQL, Oracle, ODBC, PostgreSQL, SQLite, Sybase。PEAR DB可以完全作为一个PHP程序的数据库层,而且速度也很理想(当然不比直接用mysql_query来得快,不过在大型的程序中可以凸现它的效果),所有的功能都包含在三个类型中,用法也很简单。以下我将介绍这三种类型:

1.DB类
DB类为PEAR DB的主干,所有的函式以静态呼叫,所以在运用的时候不需要实体化,可以直接呼叫。当你有了其中一个以上所提到的数据库之后,第一步就是连接数据库了,利用DB::connect()再加上一个DSN(一段连接数据库所需的字串。DSN的格式如下:
  1. sqltype://username:passwd@protocol+host/database?option=value
  2. Example: $dsn =  “mysql://username:passw0rD@localhost/mydb”
复制代码

Sqltype是指数据库平台,详细的字串可以到DSN网页参考。
接下来再把DSN传入DB::connect()参数
  1. $conn = & DB::connect($dsn);
  2. If(Pear::isError($conn)){
  3.         die($conn->getMessage());
  4. }
复制代码
$conn是由DB::connect()传回来的一个界面实体,接下来它将扮演一个很重要的角色;注意下面一段,这里运用到PEAR::isError()来检查$conn是否是DB error物件,要是有错误的话,$conn将会自动释出错误信息。getMessage()这个函式存在于DB error类型,随时可以调用。



*PEAR一般上是随PHP一起安装的,如果要另外安装的话,可以下在PHP的完整压缩包,执行里面的do-pear.bat就可以了。(DB已经包含在PEAR安装包里面了,所以不需要另外下载。)


 

<div style="font-size: 16px; width: 99%;" class="simpletable smalltxt"><div style="font-size: 16px;" class="subtable altbg1">
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表