http://blog.sina.com.cn/s/blog_5dd86d670100c47d.html

接触PHP的人都会知道mysql_connect()这个经典的函数,它是用于连接MySQL数据库的,想必在这里不用介绍太多大家都明白。

在“改革开放”的今天,你是否还依然使用mysql_connect()呢?
在PHP5中,新增加了两个连接MySQL的方法,分别是PDO与mysqli。
对于mysqli,也许好多人听说过或者使用过,用法与mysql类似,或者是用面向对象的方法,传说这个会比mysql_connect的负载能力强。

对于PDO,不知道了解的人有多少,它是一个完全面向对象的连接方式,更换数据库类型时,也仅仅改很少的部分就可以完成,更主要的是它特别容易让人理解。也许有些人看到PDO的文档望而止步,也许有些人看到PDO是PHPChina中高级班而不是初级班的教程对它产生恐惧感(当年我也是这样),可是,如果你真正用到PDO的时候,会感觉到PDO真的是如此的简单。

也许你会说:“只不过是换一种思维、兼容的数据库多一些而已,我已经对mysql_connect的思维很熟悉了,至于兼容数据库,写几个类就可以的嘛。”PDO的优点并不止这些。你可以放一个Discuz(Discuz用的mysql_connect连接)局域网的服务器上(或者你的电脑),然后,用压力测试测试一下,两分钟后,访问你安装的论坛,肯定会报2002错误,因为访问量过大,连不上数据库了。

PDO的效率在这里不多说,网上炒作的很多,你可以去百度看一下,效率不是主要的,主要是负载量。
我做过测试,我们公司的一套Web2.0程序,在Linux操作系统,双核CPU,4G内存的服务器,用
mysql_connect连接数据库,做压力测试,load
average已经到了80左右(越小越好)。mysql_pconnect和mysqli好像没挂,但是load
average也是80左右,这时候,页面基本打不开(关于mysql_pconnect和mysqli的测试好像是这样,记不清了)。而PDO做压力测试时,页面很慢,但不会报任何错误,load
average在20左右。以上测试是同一套程序,同一台机器上测试的(把数据库三种连接方式封装成类,改名,上传,测试)。

现在,你是不是有迁移PDO的冲动了?不过有些事情你必需要知道的。

1.PDO虽然有如此多的优点,但是,PDO必需要改配置文件或编译(Linux)来加载它,如果你用的是虚拟主机,在PHPINFO中找不到PDO与pdo_mysql,那你还是放弃的,如果是自己的服务器,Windows可以改php.ini,打开pdo与pdo_mysql,Linux带上—with-pdo与—with-pdo_mysql来重新编译安装。

2.如果你用的是PHP4,不想迁移到PHP5的话,也放弃吧,因为PDO只有PHP5才可以使用。
了解么多,那该怎么学PDO呢?你可以在PHP手册中来学习PDO,真的不是很难,如果你英文水平不是很好,那你就看实例吧,实例讲的很明白。

最后,给大家附上三个类,分别是mysql/mysqli/pdo连接数据库的方法,调用方法都是一样,如果你会MySQL,你可以对照mysql_connect与pdo两个类文件来看(点击查看效率分析与下载三个类文件)。