传奇世界私服
网站首页 Linux博客  Linux网址导航  Linux下载  Linux群集  Linux搜索  网站地图
 


 13 12
发新话题
打印

ADODB与PearDB的兼容部分

ADODB与PearDB的兼容部分

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->PConnect($_CONFIG['db_host'], $_CONFIG['db_username'], $_CONFIG['db_password'], $_CONFIG['db_name']);
            break;
        case "sqlite":
            $DB->PConnect("$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]
加入Linux大本营管理团队,共创美好家园!有意者请 mailto: webmaster@linuxdby.com

TOP

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的调试模式和很多功能还是有很大差距的,所以最好不要在开发和使用过程中轻易转换数据库驱动.
加入Linux大本营管理团队,共创美好家园!有意者请 mailto: webmaster@linuxdby.com

TOP

大家有什么看法

请问大家有什么看法?我绝对喜欢这个帖子

-------------------------
We provide all WoW Gold  services. You can buy WoW Gold, Cheap WoW Gold here!
Welcome to our website for your World of Warcraft Gold,Cheap WoW Gold,World Of Warcraft gold,Cheap World of Warcraft Gold,buy cheap World Of Warcraft gold,World Of Warcraft gold,real WoW Gold,Cheap WoW Gold,sell WoW Gold !
悠悠岁月

TOP

 13 12
发新话题