0

我需要在 symfony 2.0 中更改特定登录的数据库名称(参数 .ini 文件)。所以我在会话中尝试了。但它不起作用。是否可以将会话值放入参数中。ini 文件?

我的代码:(参数 .ini 文件)

<?php
session_start();
$dbnamenew='';
if($_SESSION['test_db']!=""){
$dbnamenew=$_SESSION['test_db'];
}
else {
$dbnamenew ='test';
}
?>
; These parameters can be imported into other config files
; by enclosing the key with % (like %database_user%)
; Comments start with ';', as in php.ini
[parameters]
    database_driver="pdo_mysql"
    database_host="localhost"
    database_port="22"
    database_name="<?php echo dbnamenew;?>"
    database_user="user"
    database_password="pass"
    mailer_transport="smtp"
    mailer_host="localhost"
    mailer_user=""
    mailer_password=""
    locale="en"
    secret="b538e3680321a85b2e39a3d1772e0b711ff9371c"
4

1 回答 1

0

即使你可以在配置文件中使用 PHP,它也不会工作,因为解析的配置被缓存(所以它只执行一次)。

如果您有有限数量的数据库,请为每个数据库定义一个数据库连接。您可以稍后根据从会话中获取的变量来选择它。

如果您也使用教义的实体管理器,或者如果您有无限数量的数据库,则必须即时更改连接参数。您可以使用事件侦听器来做到这一点。

描述如何更改数据库连接的相关答案:Symfony 2 : multiple and dynamic database connection

于 2013-02-28T16:25:13.350 回答