基本上,我已經是這樣的:笨 - 將數據保存在模型
class Database extends CI_Model
{
function __construct()
{
parent::__construct();
}
function connect($connection_infos)
{
$db = @new mysqli($connection_infos['host'], $connection_infos['username'],
$connection_infos['password'], $connection_infos['database']);
if (mysqli_connect_errno())
return FALSE;
else
return TRUE;
}
}
該模型加載到控制器的功能:
class Management extends CI_Controller
{
static $dbs = array(
'ref' => array(
'connected' => FALSE,
),
'dest' => array(
'connected' => FALSE,
)
);
function connection()
{
$this->load->library('form_validation');
$data = array();
$this->form_validation->set_rules('host', 'Hostname', 'required');
$this->form_validation->set_rules('username', 'Username', 'required');
$this->form_validation->set_rules('database', 'Database', 'required');
if (!$this->form_validation->run()) {
$data['dbs'] = self::$dbs;
} else {
$this->load->model('database'); // Here I load the model
$connection_infos = array(
'host' => $this->input->post('host'),
'username' => $this->input->post('username'),
'password' => $this->input->post('password'),
'database' => $this->input->post('database'),
);
if ($this->database->connect($connection_infos)) {
self::$dbs['ref']['connected'] = TRUE;
$data['dbs'] = self::$dbs;
}
}
$this->load->view('dashboard', $data);
}
}
因此,這裏是我做過什麼:
在我看來的表單驗證中,我從我的控制器調用函數connection
。該功能加載Database
型號,並調用模型的功能connect
。
我的問題是:如果我想讓我的模型中的其他功能發出其他請求,我是否會被迫每次都打開一個連接?如果是,我如何「存儲」連接憑證?
謝謝!
您知道Codeigniter有一個數據庫幫助程序庫嗎?其中,您可以創建一個自定義模型,包含所有可以重複使用的功能和請求,而不必擔心自己創建數據庫類,或擔心在需要時連接等。 – chris 2012-08-06 16:11:56
我有一個問題,你爲什麼使用Codeignitor? – Red 2012-08-06 17:46:23
@chris當然是我了,但在這裏我想動態地連接到數據庫,具體取決於用戶在表單中放置的內容。 – 2012-08-07 07:04:15