Yii2创建数据库连接 [英] Yii2 Create Database Connection
问题描述
我想以编程方式创建数据库连接,而不使用配置文件。我有一个表单,其中用户输入数据库详细信息,如 hostname
, username
,
和数据库名称
。在这些细节的基础上,进行一个新的测试连接,如果通过它应该生成必要的文件。
这是我试过的:
I want to create a database connection programmatically without using the config file. I have a form wherein the user enters the database details like the hostname
, username
, password
and the database name
. On the basis of these details a new test connection is made and if it passes it should generate the necessary files.
This is what I have tried:
// Create Test DB Connection
Yii::$app->set('id', [
'class' => 'yii\db\Connection',
'dsn' => $dsn,
'username' => $form->username,
'password' => $form->password,
'charset' => 'utf8'
]);
try {
// Check DB Connection
if (Yii::$app->db->getIsActive()) {
// Write Config
$config['components']['db']['class'] = 'yii\db\Connection';
$config['components']['db']['dsn'] = $dsn;
$config['components']['db']['username'] = $username;
$config['components']['db']['password'] = $password;
$config['components']['db']['charset'] = 'utf8';
Configuration::setConfig($config);
$success = TRUE;
return $this->redirect(['init']);
}else{
$errorMsg = 'Incorrect Configurations';
}
} catch (Exception $e) {
$errorMsg = $e->getMessage();
}
我已经测试了一遍又一遍,即使配置正确,错误。
所有的帮助是赞赏。提前感谢!
I have tested this again and again and even with correct configurations it is giving an error. All the help is appreciated. Thanks in advance!
推荐答案
我意识到我的错误。当使用 Yii :: $ app-> set()
设置 db
连接时,使用 Yii :: $ app-> db-> open()
手动打开
Yii不为您打开连接。
I realised my mistake. When using Yii::$app->set()
for setting up the db
connection, you have to even manually open
the connection using Yii::$app->db->open()
. Yii doesn't open up the connection for you.
这篇关于Yii2创建数据库连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!