php - Yii2 创建数据库连接

标签 php database yii2

我想在不使用配置文件的情况下以编程方式创建数据库连接。我有一个表单,用户可以在其中输入数据库详细信息,例如 hostnameusernamepassworddatabase name .在这些细节的基础上,建立了一个新的测试连接,如果它通过,它应该生成必要的文件。 这是我尝试过的:

// 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();
}

我已经一次又一次地测试了这个,即使配置正确,它也会出错。 感谢所有帮助。提前致谢!

最佳答案

你可以这样定义一个新的连接:

   $db = new yii\db\Connection([
   'dsn' => 'mysql:host=localhost;dbname=example',
   'username' => 'root',
   'password' => '',
   'charset' => 'utf8',
]); 

$db->open();

DB连接建立后,可以执行如下SQL语句eg:

 $command = $db->createCommand('SELECT * FROM post');
 $posts = $command->queryAll();

 // or 

 $command = $connection->createCommand('UPDATE post SET status=1');
 $command->execute();

你可以看看这个文档和指南

http://www.yiiframework.com/doc-2.0/guide-db-dao.html

http://www.yiiframework.com/doc-2.0/yii-db-connection.html

关于php - Yii2 创建数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28254001/

相关文章:

javascript - 缺少联系表(send.php 文件)

php - 在单个查询中搜索逗号分隔的 MySQL 列中的多个值

.net - 需要用于全文搜索的数据库。 SQL 与 NoSQL?

mysql - 使用触发器进行差异化的通用日志记录

android - 从 android 中通过 sqlite 数据库进行不适当的搜索

php - 无法在 Yii2 swift 邮件程序中打开文件进行阅读

php - 使用加载器(ioncube 和 source guardian)构建带有 PHPfarm 错误的 PHP

php - 如何在没有js代码的情况下显示json结果数组

php - Yii2 每月更新一次表

twitter-bootstrap - 如何在 Yii2 中仅选择 daterangepicker 年份?