【问题标题】:How to get rid of from database error in Codeigniter?如何摆脱 Codeigniter 中的数据库错误?
【发布时间】:2017-07-23 16:01:29
【问题描述】:

我已经用 dbforge 创建了数据库设置模型,并且还通过控制器调用它来设置数据库。但问题是当我从 localhost 运行 url 时,它给出了数据库错误调用 "Unknown database 'loginproject'" 的错误。注意到我在 config> database.php 'database' => 'loginproject', 中设置了数据库。如果我将其删除,它将不会显示错误。但我想把它留在那里,因为以后在项目中需要它。如何设置它并留在那里进行数据库设置。我的代码如下。

Welcome.php-控制器:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {


    public function index()
    {
        $this-> home();
    }


    public function home()
    {

        $data['title'] = 'This is title';

        $this -> load -> model('setup_model');

        $this -> setup_model -> createDatabase();

        $this -> load -> view('welcome_message');


    }

}

Setup_model.php- 型号:

<?php

class setup_model extends CI_Model

{

    public function __construct() {

    }

    public function createDatabase()

    {

        $this->load->dbutil();
        $this->load->dbforge();

 if (!$this->dbutil->database_exists('loginproject'))
 {

    $this->dbforge->create_database('loginproject');

    $this->db->query('use loginproject');


        $fields = array(

            'user_id' => array(

                'type' => 'int',
                'constraint' => 11,
                'unsigned' => true,
                'auto_increment' => true

            ),

            'username' => array(

                'type' => 'varchar',
                'constraint' => 230,

            ),

             'email' => array(

                'type' => 'varchar',
                'constraint' => 250,
            ),

            'password' => array(

             'type' => 'varchar',
                'constraint' => 255,
            ),


            'created_date' => array(

             'type' => 'date',

            ),

            'phone' => array(

             'type' => 'varchar',
                'constraint' => 255,
            ),



        );


         $this -> dbforge -> add_field($fields);

         $this -> dbforge -> add_key('user_id', true);

         $this -> dbforge -> create_table('users');


         echo "Setup Done Succesfully";

  }



    }



}

【问题讨论】:

  • 你是否在自动加载中添加了数据库库$autoload['libraries'] = array('database');
  • 已添加。虽然它给出了错误

标签: php database codeigniter


【解决方案1】:

手动创建数据库并连接 config/database.php
然后在您的 createDatabase()

中更改以下内容
public function createDatabase(){
        $this->load->dbutil();
        $this->load->dbforge();
        if (!$this->dbutil->database_exists('loginproject'))
        {
        $this->dbforge->create_database('loginproject');
        }
        $this->db->query('use loginproject');
        $fields = array(
        'user_id' => array(
            'type' => 'int',
            'constraint' => 11,
            'unsigned' => true,
            'auto_increment' => true
        ),
        'username' => array(
            'type' => 'varchar',
            'constraint' => 230,
        ),
         'email' => array(
            'type' => 'varchar',
            'constraint' => 250,
        ),
        'password' => array(
         'type' => 'varchar',
            'constraint' => 255,
        ),
        'created_date' => array(
         'type' => 'date',
        ),
        'phone' => array(
         'type' => 'varchar',
            'constraint' => 255,
        ),
        );
        $this -> dbforge -> add_field($fields);
        $this -> dbforge -> add_key('user_id', true);
        $this -> dbforge -> create_table('users');
        echo "Setup Done Succesfully";
}

【讨论】:

  • 你改变了什么?
  • 如果数据库已经存在则唯一的 if 条件关闭
  • 不,它会检查数据库是否存在,然后也将创建表,在此条件下创建一次表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多