我想用yii2创建数据库。
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully";
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
使用此代码,我们可以创建数据库,但我想知道是否有可能以Yii2方式
答案 0 :(得分:0)
不建议在运行时创建表。已经设置了模式并运行SQL /非SQL查询。
为此,您需要在config文件夹中创建一个文件(比如说myDB.php
)并提供数据库详细信息,如下所示:
<?php
return [
'class' => 'yii\db\Connection',
'dsn' => 'dblib:host=localhost;dbname=yourDBName',
'username' => 'yourUsername',
'password' => 'yourPassword',
'charset' => 'utf8',
];
在web.php.Add中注册此数据库以下行:
'my_db' => require(__DIR__ . '/myDB.php'),
在控制器中,使用此db,如下所示:
$query = 'select columnID from table where ID=:ID';
Yii::$app->my_db->createCommand($query)
->bindValue(':ID',1)
->queryOne();
答案 1 :(得分:0)
目前你无法用Yii2做到这一点。这是因为一个框架的复杂性太大,使得一切都可以在许多数据库引擎(MySQL,Oracle,MSSQL等)上运行。编写代码太多,但可以使用您的查询完成功能。
IMO,使用当前数据库连接创建数据库没有任何问题。这可以在SaaS多租户架构中找到,当一个新客户注册一个帐户,然后创建一个新的分离DB来封装大部分内容/安全原因。