SP多数据库选择的问题

#1 ltotal

$db2 = spClass('db_'.$GLOBALS['G_SP']['db']['driver'], array(0 => $GLOBALS['G_SP']['db2']), $GLOBALS['G_SP']['db_driver_path'], TRUE);
$mRegexp->_db = $db2;
$mRegexp->create(array('name' => 111, 'value' => 222));

切换数据库录入数据时,直接报
DESCRIBE rz_regexp
执行错误:把第一句代码最后的 TRUE 去掉就可以,但也实现不了切换别的库录入数据的目的了。
手册的写法,现在出错了,请问是什么原因?

数据库配置如下:
    "db" => array(
        'driver' => 'mysql',
        'port' => 3306,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'root',
        'database' => 'rzcms',
        'prefix' => ''
    ),
    "db2" => array(
        'driver' => 'mysql',
        'port' => 3306,
        'host' => 'localhost',
        'login' => 'root',
        'password' => 'root',
        'database' => 'rzcms_bak',
        'prefix' => ''
    ),

2012-01-05 13:44:18

#2 ltotal

。。。可以了,顺序问题,必须先生成可供切换的数据库实例,再实例化具体模型。。。

2012-01-05 13:50:47

#3 ltotal

$db = spClass('db_mysql', array($GLOBALS['G_SP']['db']), SP_PATH."/Drivers/mysql.php", TRUE);
            $db2 = spClass('db_mysql', array($GLOBALS['G_SP']['db2']), SP_PATH."/Drivers/mysql.php", TRUE);
            
            $mRegexp = spClass('mRegexp');
            $mRegexp->_db = $db;
            $mRegexp->create(array('name' => 111, 'value' => 222));

            $mRegexp->_db = $db2;
            $mRegexp->create(array('name' => 111, 'value' => 222));
现在是这样写,结果2条数据全部都插到 $db2 配置的数据库中去了,求解。。。

2012-01-05 14:10:26

#4 jake

测试过没有你说的情况!

建议你把$db和$db2都dump出来看看。看看配置和类。还有dump出mRegexp 看看

2012-01-05 15:08:40

#5 ltotal

$db1和$db2的dump出的结果是一样的,
db_mysql Object ( [conn] => Resource id 21 [arrSql] => Array ( [0] => SET NAMES GB2312 ) )
模型则是最基本的模型
class mRegexp extends spModel
{
    public $pk = "id";
    public $table = "rz_regexp";
}

刚试了
$db = spClass('db_mysql', array($GLOBALS['G_SP']['db']), SP_PATH."/Drivers/mysql.php", TRUE);
$mRegexp = spClass('mRegexp');
$mRegexp->_db = $db;
$mRegexp->create(array('name' => 111, 'value' => 222));

$db2 = spClass('db_mysql', array($GLOBALS['G_SP']['db2']), SP_PATH."/Drivers/mysql.php", TRUE);
$mRegexp->_db = $db2;
$mRegexp->create(array('name' => 111, 'value' => 222));

要这样写才行,有点奇怪。。。

2012-01-05 15:24:28