尝试连接到Codeigniter中的非默认数据库时出错

时间:2015-01-21 18:19:59

标签: php database codeigniter connection

以下是我尝试连接的数据库的数据库配置。这个特定的模型有所不同。

$db['campaignsDB']['hostname'] = 'localhost';
$db['campaignsDB']['username'] = 'root';
$db['campaignsDB']['password'] = '';
$db['campaignsDB']['database'] = 'sf_campaigns';
$db['campaignsDB']['dbdriver'] = 'mysql';
$db['campaignsDB']['dbprefix'] = '';
$db['campaignsDB']['pconnect'] = TRUE;
$db['campaignsDB']['db_debug'] = TRUE;
$db['campaignsDB']['cache_on'] = FALSE;
$db['campaignsDB']['cachedir'] = '';
$db['campaignsDB']['char_set'] = 'utf8';
$db['campaignsDB']['dbcollat'] = 'utf8_general_ci';
$db['campaignsDB']['swap_pre'] = '';
$db['campaignsDB']['autoinit'] = TRUE;
$db['campaignsDB']['stricton'] = FALSE;

我创建了一个crud_model,我确定这些函数是正确的,但是我要包含相关的部分...

class CRUD_model extends CI_Model
{
    protected $database = null;
    protected $_table = null;
    protected $_primary_key = null;

    public function __construct()
    {
        parent::__construct();
        $this->load->database($this->database, TRUE);
    }

我遇到的问题如下:

我创建了campaign_model ...

class Campaigns_model extends CRUD_model
{
    protected $database = "campaignsDB"; //DEFINE database
    protected $_table = "camp_forminfo";
    protected $_primary_key = "form_id";

    public function __construct()
    {
        parent::__construct();
    }
}

现在我在很长一段时间后回到面向对象的编程,所以我可能会在这里错过一些重要的部分,但我可以通过在一个基类中定义一个基类的变量来宣誓因此,当我尝试使用基类时,它将被定义。方法。我尝试在我的控制器中使用CRUD_model的插入功能......

首先我加载campaign_model ...

class Campaigns extends MY_Controller
{
    private $layout = "";
    private $content = "";

    public function __construct()
    {
        parent::__construct($this->layout);
        $this->load->model('campaigns_model');  
    }

然后我在我的控制器功能中使用它......

public function saveForm()
{
    $this->campaigns_model->insert([
        'form_name' => $this->input->post('form_name'),
        'form_leads' => $this->input->post('form_leads'),
        'form_content' => $this->input->post('form_content'),
        'form_template' => $this->input->post('form_template')  
    ]);
}

我收到以下错误:

An Error Was Encountered

You have not selected a database type to connect to.

2 个答案:

答案 0 :(得分:1)

我可能错了,但这就是我在双数据库应用中的表现:

class CRUD_model extends CI_Model{
    protected $database = null;
    protected $_table = null;
    protected $_primary_key = null;

    public function __construct() {
        parent::__construct();
        $this->db = $this->load->database($this->database, true);
    }

答案 1 :(得分:0)

奇怪的是,我能够通过稍微修改我的CRUD_model代码来完成所有工作。

通过改变这个......

class CRUD_model extends CI_Model
{
    protected $database = null;
    protected $_table = null;
    protected $_primary_key = null;

public function __construct()
{
    parent::__construct();
    $this->load->database($this->database, TRUE);
}

对此...

class CRUD_model extends CI_Model
{
    protected $database = null;
    protected $_table = null;
    protected $_primary_key = null;

public function __construct()
{
    parent::__construct();
    $this->load->database("".$this->database."", TRUE);
}

通过强制将变量解释为它工作的字符串,它起作用了。为什么呢,我还没有学习,也许有人可以分享?