尝试连接到 Codeigniter 中的非默认数据库时出错
Error when attempting to connect to a non-default database in Codeigniter
这是我尝试连接的数据库的数据库配置。对于这个特定的模型是不同的。
$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);
}
我遇到的问题如下:
我创建了一个campaigns_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();
}
}
现在我在长时间中断后回到面向对象编程,所以我可能在这里遗漏了一些重要的部分,但我可以通过定义一个基变量来发誓 class在派生的 class 中,当我尝试使用基本 class' 方法时,它会被定义。我尝试在我的控制器中使用 CRUD_model 的插入功能...
首先我加载 campaigns_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.
我可能是错的,但这是我在双数据库应用程序中的做法:
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);
}
奇怪的是,我能够通过对我的 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);
}
它起作用了...通过强制将该变量解释为它起作用的字符串。为什么会这样,我还没学会,谁能分享一下?
这是我尝试连接的数据库的数据库配置。对于这个特定的模型是不同的。
$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);
}
我遇到的问题如下:
我创建了一个campaigns_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();
}
}
现在我在长时间中断后回到面向对象编程,所以我可能在这里遗漏了一些重要的部分,但我可以通过定义一个基变量来发誓 class在派生的 class 中,当我尝试使用基本 class' 方法时,它会被定义。我尝试在我的控制器中使用 CRUD_model 的插入功能...
首先我加载 campaigns_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.
我可能是错的,但这是我在双数据库应用程序中的做法:
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);
}
奇怪的是,我能够通过对我的 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);
}
它起作用了...通过强制将该变量解释为它起作用的字符串。为什么会这样,我还没学会,谁能分享一下?