【发布时间】:2012-12-27 12:53:41
【问题描述】:
我正在使用ActiveRecord,我需要切换数据库。当我登录时,我选择了一个数据库。 数据库是相同的模式。 我试过了:
$connections = array(
'1' => 'mysql://root:pass@localhost/db1;charset=utf8',
'2' => 'mysql://root:pass@localhost/db2;charset=utf8',
'test' => 'mysql://root:password@localhost/database_name'
);
$current_db = $_SESSION['db'] ? $_SESSION['db'] : '2';
ActiveRecord\Config::initialize(function($cfg) use ($connections, $current_db)
{
$cfg->set_model_directory(MODEL_PATH);
$cfg->set_connections($connections);
$cfg->set_default_connection($current_db);
});
db '2' 是默认值。但不起作用。
【问题讨论】:
-
你得到什么样的错误?
-
没有错误。问题是即使 $current_db 取任何值,数据库也不会改变。
-
您在此处发布的代码看起来不错,它一定是别的东西(在别处设置连接,$_SESSION['db'] 中的某些值等)
-
首先,做一些调试。回显您的
$current_db,例如在各个地方确认它实际上是“2”。然后,检查它是否适用于另一个默认值(test或1)。此外,除了 activerecord 之外,还要测试您的连接。然后回到这里并显示结果:) -
我添加了
print_r($_SESSION);,但如果我添加行print_r(Array(123, 55, 66))显示Array ( [0] => 123 [1] => 55 [2] => 66 ),什么都不显示(?!?!?!)为什么?
标签: php activerecord phpactiverecord