打印本文 打印本文 关闭窗口 关闭窗口
指南:从MySQL转向ADODB(1)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1472  更新时间:2009/4/23 10:49:28  文章录入:mintao  责任编辑:mintao
                
         You say eether and I say eyether, 
                  You say neether and I say nyther; 
                  Eether, eyether, neether, nyther - 
                  Let''''s call the whole thing off ! 




                  You like potato and I like po-tah-to, 
                  You like tomato and I like to-mah-to; 
                  Potato, po-tah-to, tomato, to-mah-to - 
                  Let''''s call the whole thing off !         

我喜欢这首歌,尤其是Louis Armstrong 和Ella二重唱的版本。这首歌说的是恋
爱中的两个人要和谐相处是多么难。它说的也是一种妥协和寻找共同点。这也是这篇
文章所要说的。
   使用PHP创建动态Web站点,你将有最少的烦恼和最多的乐趣。创建这些Web站点的
时候,我们需要使用数据库来获取登录信息,在网页上发布动态新闻和保存论坛帖子。
因此我们会说我们正在使用流行的MySQL数据库来完成这些工作。然而你的公司做了一
项如此不可思议的工作,以至于你们公司的网站受欢迎的程度远大于你当初最大胆的
估计。你发现MySQL无法扩展到能处理如此大的工作量,是该更换数据库的时候了。
    不幸的是在PHP中访问不同数据库的方式都稍有不同。要连接到MySQL,你要使用
mysql_connect(); 当你决定升级到Oracle或者Microsoft SQL Server时,你要分别
使用ocilogon()mssql_connect();更糟糕的是你在不同连接函数里使用的参数也
各不相同…….一个数据库说po-tato,另一个数据库说pota-to.哦-哦。
 

让我们不要放弃整个工作

当你需要保证可移植性的时候,一种像ADODB这样的数据库包装库(database wrapper library)
已经出现了。它提供统一的API来和任何它支持的数据库进行连接,因此你不必放弃整
个移植升级工作。
    ADODB 代表 Active Data Objects DataBase (不好意思,计算机小子有时也不是
十分有创意). ADODB 目前支持 MySQL, PostgreSQL, Oracle, Interbase, Microsoft
SQL Server, Access, FoxPro, Sybase, ODBC 和 ADO. 你可以从
http://php.weblogs.com/adodb.
下载ADODB

MySQL 例子

和PHP一起使用的最常见的数据库是MySQL, 因此我猜你应该很熟悉下面的代码。它连
接到位于localhost的MySQL服务器上的mydb数据库,并执行一条SQL查询声明。查询
结果将打印出来,查询结果中每条记录显示成一行。

$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM employees",$db);
if ($result === false) die("failed"); 
while ($fields = mysql_fetch_row($result)) {
 for ($i=0, $max=sizeof($fields); $i < $max; $i++) {
                  print $fields[$i].'''' '''';
 }
 print "<br>\n";
} 

上面的代码分段设置了颜色。第一段是连接阶段。第二段是SQL的执行。最后一段
显示字段值。while 循环扫描结果中的每一行,而for 循环扫描每一列的各个字段。
    下面是在ADODB里有同样作用的代码:

 include("adodb.inc.php");
 $db = NewADOConnection(''''mysql'''');
 $db->Connect("localhost", "root", "password", "mydb");
 $result = $db->Execute("SELECT * FROM employees");
 if ($result === false) die("failed");  
 while (!$result->EOF) {
         for ($i=0, $max=$result->FieldCount(); $i < $max; $i++)
                 print $result->fields[$i].'''' '''';
         $result->MoveNext();
         print "<br>\n";
 } 

现在改成要连接到Oracle数据库只需简单的把第二行改为NewADOConnection(''''oracle'''')
就可以了。让我们仔细看看这段代码…

连接到数据库

include("adodb.inc.php");
$db = NewADOConnection(''''mysql'''');
$db->Connect("localhost", "root", "password", "mydb");

这段连接代码比MySQL的那段更精致一些。在ADODB中,我们使用面向对象的方法来管理
连接多种数据库的复杂性。我们有不同的类来处理不同的数据库。如果你不熟悉面向对
编程,不要急-所有这些复杂操作都被隐藏在
NewADOConnection()函数里了。

为了节省内存,我们只加载你要连接的特定数据库的PHP代码. 我们通过调用
NewADOConnection(databasedriver)函数来实现这个功能. 合法的数据库驱动包括
mysql, mssql, oracle, oci8, postgres, sybase, vfp, access, ibase 和其它等等。

这样我们通过调用NewADOConnection()创建connection类的一个新的实例。最后我们用
$db->Connect()来连接数据库.

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口