首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CodeIgniter & DBForge -创建数据库和表

CodeIgniter & DBForge -创建数据库和表
EN

Stack Overflow用户
提问于 2013-05-11 19:08:07
回答 6查看 18.4K关注 0票数 7

我正在尝试用CodeIgniter编写一个脚本,该脚本将创建一个数据库,然后将表与新表中的各种字段一起添加到新创建的数据库中。

到目前为止,我已经使用dbforge来创建新的数据库,但是由于我使用的是数据库库,并且具有预先设置的数据库连接值,所以当它创建一个表时,它会将它放在预选的数据库中,而不是它刚刚创建的数据库中。

在database.php配置文件中,我有以下内容:

代码语言:javascript
复制
$db['default']['database'] = 'db1';

如果我使用以下命令创建一个新数据库:

代码语言:javascript
复制
$this->dbforge->create_database('db2');

将创建'db2‘,但是下面的命令将表放在'db1’中。

代码语言:javascript
复制
$this->dbforge->create_table('table1');

我需要在'db2‘中创建'table1’。如何让CI选择新创建的数据库('db2')在正确的位置创建表,然后切换回'db1'?

我看过以下问题,这与我所做的类似,但我不想在database.php中放置任何进一步的连接条目

显示错误的代码点火器:没有选择数据库

任何帮助都很感激!

编辑-我应该添加create_database可以有数据库名称的任何名称.这是一个脚本,用于自动创建数据库和从表单中提取DB名称的相关表。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-12 14:16:04

代码语言:javascript
复制
$this->db->query('use db2');

$this->db->query('use DB1');
票数 8
EN

Stack Overflow用户

发布于 2014-09-12 14:29:40

代码语言:javascript
复制
    if ($this->dbforge->create_database('my_db_test'))
{
    try{
      $current_database = "my_db_test";
      $this->db->database = $current_database;
     $this->db->close();
     $config['hostname'] = "localhost";
     $config['username'] = "root";
     $config['password'] = "";
     $config['database'] = $current_database;
     $config['dbdriver'] = "mysql";
     $config['dbprefix'] = "";
     $config['pconnect'] = FALSE;
     $config['db_debug'] = TRUE;
     $config['cache_on'] = FALSE;
     $config['cachedir'] = "";
     $config['char_set'] = "utf8";
     $config['dbcollat'] = "utf8_general_ci";
     $this->load->database($config);
    $fields = array(
                        'blog_id' => array(
                                                 'type' => 'INT',
                                                 'constraint' => 5,
                                                 'unsigned' => TRUE,
                                                 'auto_increment' => TRUE
                                          ),
                        'blog_title' => array(
                                                 'type' => 'VARCHAR',
                                                 'constraint' => '100',
                                          ),
                        'blog_author' => array(
                                                 'type' =>'VARCHAR',
                                                 'constraint' => '100',
                                                 'default' => 'King of Town',
                                          ),
                        'blog_description' => array(
                                                 'type' => 'TEXT',
                                                 'null' => TRUE,
                                          ),
                );

    $this->dbforge->add_field($fields);
    $this->dbforge->add_key('blog_id', TRUE);
    $this->dbforge->create_table('ipn_log', TRUE);
    }catch(Exception $e){
    echo $e->getMessage();die;
   }
  }

}
票数 2
EN

Stack Overflow用户

发布于 2019-02-09 16:27:58

更好的方法是获得一个dbforge类,表示要操作的数据库。

代码语言:javascript
复制
$this->myforge = $this->load->dbforge($this->other_db, TRUE);

使用$this->myforge对象可以像往常一样工作。

此方法将避免在构建库时发生冲突。最好不要在运行时破坏库用户的默认数据库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16500733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档