LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2760|回复: 2

ADODB与PearDB的兼容部分

[复制链接]
发表于 2005-3-7 23:36:01 | 显示全部楼层 |阅读模式
ADODB几乎成为了php数据库程序开发标准了,但是PearDB也已经进入了PHP的PECL库,如果你在为两者之间的选择二头疼的话,那大可不必了,ADODB已经提供了一部分向PearDB兼容的模式。

以下是笔者测试时候发现的,因为黄叶兄提供的空间PearDB居然无法工作,很奇怪的说
ADODB连接代码
[PHP]
<?php
//adodb connection
if($_CONFIG['db_driver'] == "adodb")
{
        //connect to database
        require_once("$ROOT_PATH/inc/adodb/adodb.inc.php");
        $ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
        $DB =& ADONewConnection($_CONFIG['db_type']);

        //connect to data base
        switch ($_CONFIG['db_type'])
        {
                case "mysql":
                case "mysqli":
                        $DB->Connect($_CONFIG['db_host'], $_CONFIG['db_username'], $_CONFIG['db_password'], $_CONFIG['db_name']);
                        break;
                case "sqlite":
                        $DB->Connect("$ROOT_PATH/".$_CONFIG['db_name']);
                        break;
        }
}
?>
[/PHP]





PearDB的连接代码
[PHP]
<?php
//pearDB connection
if($_CONFIG['db_driver'] == "pdb")
{
        require_once("$ROOT_PATH/inc/pear/DB.php");
        $dsn = array(
                'phptype'  => $_CONFIG['db_type'],
                'username' => $_CONFIG['db_username'],
                'password' => $_CONFIG['db_password'],
                'hostspec' => $_CONFIG['db_host'],
                'database' => $_CONFIG['db_name']);

        if($_CONFIG['db_type'] == "sqlite")
        {
                $dsn = array(
                        'phptype'  => $_CONFIG['db_type'],
                        'database' => "$ROOT_PATH/".$_CONFIG['db_name'],
                        'mode'     => '0644');
        }

        $options = array(
                'persistent' => $_CONFIG['pconnect'],
                'debug' => $_CONFIG['debug']);

        $DB =& DB::Connect($dsn, $options);
        if (DB::isError($DB))
        {
                 die($DB->getMessage());
        }
        $DB->setFetchMode(DB_FETCHMODE_ASSOC);
}
?>
[/PHP]
 楼主| 发表于 2005-3-7 23:45:26 | 显示全部楼层
ADODB兼容PearDB的方法:
[PHP]
//查询
$sql = "select * from foo";

$rs =& $DB->query($sql);
//连=&的速度都一样,ADO标准用法为$DB->Execute()DO里的Execute()却是另外一个功能


//记录数
$rows = $rs->numRows();
//ADO标准用法是$rs->RecordCount();

//获取记录
$arr = $rs->fetchRow();
//PDB和ADODB用法相同,但是PDB要根据 $DB->setFetchMode(DB_FETCHMODE_ASSOC); 来修改获取关联数组,
//而ADODB则是$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
[/PHP]


这样,如果不考虑mssql server和sybase等不支持limit语句的数据库的sql语句转换,那么语法基本上是不用改变的.但是PDB和ADODB的调试模式和很多功能还是有很大差距的,所以最好不要在开发和使用过程中轻易转换数据库驱动.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-7 23:51:11 | 显示全部楼层
BTW,我的网站程序已经使用了这种双向兼容的方式
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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