您好我尝试了登录屏幕用户名密码和另外一个字段年
年份是数据库名称选择
例如我有2015_db,2016_db,2017_db 基于年份的登录屏幕选择字段
<?php echo form_open('login',$attributes); ?>
<label for="ddlLanguage">English</label>
<input type="radio" name="ddlLanguage" id="ddlLanguage" value="eng" checked="checked">
<label for="ddlLanguage">Arabic</label>
<input type="radio" name="ddlLanguage" id="radio2" value="ar">
<div class="clearfix"></div>
<input type="text" name="txtUsername" value="<?= $this->vAdmin;?>" class="usernameLogin" />
<input type="password" name="txtPassword" value="<?= $this->vPass;?>" class="usernameLogin" />
<select name="year" id="year" >
<option value="2015">--2015--</option>
<option value="2015">--2016--</option>
</select>
<label class="label" for="chkSave" > REMEMBERME </label>
<input type="checkbox" name="chkSave" value="1" />
<a href="<?php echo base_url('forgotpassword/showlist');?>" class="forgot">FORGOTPASSWORD?</a>
<input type="submit" name="button" id="button" value="LOGIN" class="login">
</form>
请帮助我动态地在控制器和模型中分配数据库名称。
像这样$config['hostname'] = "localhost";
$config['username'] = $client_db_username; // you got this from the 'admin' database
$config['password'] = $client_db_password; // you got this from the 'admin' database
$config['database'] = $client_db_name; // you got this from the 'admin' 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);
每个数据库的许多表都不会更改,并且包含相同的信息。
我希望有一个包含此信息的主应用程序数据库,包括年份列表以及调用数据库的内容。然后,该数据库将用于选择正确的年份数据库..
答案 0 :(得分:0)
首先,您必须在config/database.php
文件中预先定义所有这些数据库。它应该看起来像下面的东西
$db['db_2015'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
$db['db_2016'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'database_name',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array()
);
如果您已填写所有数据库,则需要在控制器中检查您输入的位置。
public function getPostLogin()
{
$this->loginModel->validateLogin($this->input->post());//This will also send the database along to the function where you could catch which database to use.
}
在你的模型中,你可以这样做:
<?php class loginModel extends CI_model{
public function validateLogin($params)
{
$this->load->database($params['database']);
//After this you can run queries like always.
return $this->db->get('users');//just an example!
}
}