http://blog.sina.com.cn/jyw8[订阅]
字体大小: 正文
PHP中 ADOdb 类库介绍(上)(2008-05-20 16:41:08)
前言 为什么要使用数据库类库? 初学者 (甚至一些非初学者)常常犯的错误,就是在开发应用程序的时候,缺乏对未来的考虑。假如有一天,你的程序需要使用其它的数据库,难道你还需要重新写一篇针对于这个版本数据库的程序吗?这不是不可能发生的,尤其是当目前的数据库可能不适合你当前的需要的时候。 但是当你做这一切的时候 ,你会发现绝非你想像的那样容易:每一个 DBMS 有不同的函数。举例来说:在 Mysql 中连接数据库的函数为 mysql_connect(),而在MSSQL却是 mssql_connect()。重新查看你所有的代码,然后修改所有操作数据库的函数和查询语法,这绝不是一项简单的工作。程序会经常的被捆绑到了错误的数据库上,以至无法在运行时达到最优性能。数据库类库就是这样产生的。它允许你通过同样的代码来操作不同的数据库。一个设计良好的数据库类库可以完美的改变这一切。它允许你通过极小的修改,就能转接到其他数据库:无论你要连接什么数据库管理系统,只要使用同一个的函数,和不同的参数。举例来说, 在 ADOdb 中,只需简单地将 $db = NewADOConnection('access ') 修改为$db = NewADOConnection('mysql'),这样,你就轻松的把你的程序从 Access 数据库转移到了 Mysql 数据库中。现在网络上已经有了很多这样的数据库类库,比如Pear,PHPlib,我也已经在工作中使用它们了,也许你也曾经用过。但本文仅将重点放在我所特别关注的 ADOdb。本文我只简要地作一个介绍,使你能够马上运用它来开发你的下一个项目。以后的文章中我们将会循序渐进的对它进入更深入的了解。 目前,ADOdb 支持的数据库包括 MySQL, PostgreSQL,Interbase,Firebird,Informix,Oracle,MS SQL 7,Foxpro,Access,ADO,Sybase,FrontBase,DB2 和 generic ODBC。 ADOdb 的安装 安装 ADOdb 是一件极期容易的事,相信聪明的你一定不会感到吃力。 首先, 确定你正在运行的 PHP 是 4.0.4 版或更新版。 如果不是,我强列建议你升级! 从 PHP Everywhere 站点下载 .zip 或 .tgz 文件,解压缩到你所选的路径下。 这个路径不应在网页目录(WWWTREE,译者注:如果你的网页是在/www/下,那么,这个目录就不应为/www/here)下!虽然ADOdb的包含文件已经使用了 .inc.php 的扩展名,使得服务器即使是在最糟糕的配置下,也不会将这些.inc文件通过明文方式在浏览器中显示出来,但是我们向来不提倡将库函数文件放在网页目录下的行为。然后把下载下来的文件运行:tar -zxvf adodb350.tgz 解压,在Windows下你可以使用一个你喜欢的解压软件来操作,这样,你会得到一个 adodb 的目录其下包括了许多子目录。 测试你的安装 好了,让我们来测试一下你的安装吧。 通过在脚本中添加下列三行代码来测试你的安装是否成功。注意要把代码中的参数修改成你自己的。 include("$adodb_path/adodb.inc.php"); // includes the adodb library $db = NewADOConnection('$database_type'); // A new connection $db->Connect("$host", "$user", "$password", "$database_name"); 现在你已经拥有一个数据库连接对象 $db 了。 你也可以使用 ADONewConnection 来替换 NewADOConnection ?? 这两个是同一函数的不同的名字。 连接的数据库变量 $database_type 需要针对你的实际情况改成你所需要的。可以使用以下列表中的一个(括号内的为描述部分,不要在代码中使用): * access (Microsoft Access/Jet) * ado (Generic ADO, the base for all the other ADO drivers) * ado_access (Microsoft Access/Jet using ADO) * ado_mssql (Microsoft SQL Server using ADO) * db2 (DB2) * vfp (Microsoft Visual FoxPro) * fbsql (FrontBase) * ibase (Interbase 6 or before) * firebird (Firebird) * informix72 (Informix databases before Informix 7.3) * informix (Informix) * maxsql (MySQL with transaction support) * mssql (Microsoft SQL Server 7) * mssqlpo (Portable mssql driver) * mysql (MySQL without transaction support) * mysqlt (MySQL with transaction support, identical to maxmysql) * oci8 (Oracle 8/9) * oci805 (Oracle 8.0.5) * oci8po (Oracle 8/9 portable driver) * odbc (Generic ODBC, the base for all the other ODBC drivers) * odbc_mssql (MSSQL via ODBC) * odbc_oracle (Oracle via ODBC) * oracle (Oracle 7) * postgres (PostgreSQL) * postgres64 (PostgreSQL 6.4) * postgres7 (PostgreSQL 7, currently identical to postgres ) * sqlanywhere (Sybase SQL Anywhere) * sybase (Sybase) 如果你的链接代码出现了错误的提示,那么你首先要检查的地方就是在路径或连接的变量上。在你责备 ADOdb 之前,请确定你是已经正确的使用那些变量。(很多朋友常花太多时间去修正这些显而易见的错误。) 如果连接没有任何错误提示,那么我们现在已经可以在我们的项目中来使用 ADodb 了。 通过你的脚本连接到数据库 把上边的代码加入到你的代码前,让我们先退一步。我们最好能把上边的代码用我们自己的方法来封装起来。这样可以使你的程序变得更灵活、更具移植性。如果你直接把上面的代码插入到你的项目的每个文件中,如果将来项目的路径改变了,将会很容易产生错误,如果你的密码改变了,你可能需要对你所有的脚本进行修改,这样将会影响我们使用库函数的初衷。并且,因为你的密码信息是在 WEBTREE下的,这将产生隐患。我推荐将密码信息放在一个独立的包含文件中,比如在 ADOdb 安装目录下的某个地方。如果你要在其他服务器上运行你的程序时,你就不能保证目录结构会是相同的,所以,你要确保这个路径是正确的。我建议使用PHP 的自动包含功能来自动地包含这个文件。 include("$adodb_path/db_values.inc.php"); include("$adodb_path/adodb.inc.php"); $db = NewADOConnection('$database_type'); $db->Connect("$host", "$user", "$password", "employees"); 如果你也想要使用持久连接, 不是每次创造一个新的连接(这使许多WEB应用程序得到了加速,但是要注意有些数据库是不支持的)。可以使用 PConnect 替换掉 Connect。 文件 db_values.inc.php 是我们的数据库信息文件,内容为(你需要把下面代码中的变量改成你自己的):
  • 评论加载中,请稍候...
发评论    明星私家相册

验证码:看不清楚数字吗?点击这里再试试。收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...