修改数据库配置信息
打开./application/config/目录中的database.php文件,在原来的内容中增加另外一个数据库配置信息。文件内容如下:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/*
| -------------------------------------------------------------------
| DATABASE CONNECTIVITY SETTINGS
| -------------------------------------------------------------------
| This file will contain the settings needed to access your database.
|
| For complete instructions please consult the 'Database Connection'
| page of the User Guide.
|
| -------------------------------------------------------------------
| EXPLANATION OF VARIABLES
| -------------------------------------------------------------------
*/
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '111111';
$db['default']['database'] = 'test';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
//Additional database
$db['additional']['hostname'] = 'localhost';
$db['additional']['username'] = 'root';
$db['additional']['password'] = '111111';
$db['additional']['database'] = 'test_other';
$db['additional']['dbdriver'] = 'mysql';
$db['additional']['dbprefix'] = '';
$db['additional']['pconnect'] = FALSE;
$db['additional']['db_debug'] = TRUE;
$db['additional']['cache_on'] = FALSE;
$db['additional']['cachedir'] = '';
$db['additional']['char_set'] = 'utf8';
$db['additional']['dbcollat'] = 'utf8_general_ci';
$db['additional']['swap_pre'] = '';
$db['additional']['autoinit'] = TRUE;
$db['additional']['stricton'] = FALSE;
/* End of file database.php */
/* Location: ./application/config/database.php */
第三步:编写控制器
在./application/controllers/目录下创建名为dbc.php的控制器文件,其内容如下:
PHP复制代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* @package CI2.1.0
* @author Longde
* @version 1.0
*/
// ------------------------------------------------------------------------
header('Content-Type:text/html; charset=utf-8');
/**
* 数据库控制器
* 该控制器的主要做用是进行数据库方面的操作。
*
* @category Controllers
* @author Longde
*/
class Dbc extends CI_Controller {
/**
* 测试在同一个项目中同时使用多个数据库进行操作
* @access public
* @return array
*/
public function index()
{
//按照CI手册中的说法:如果需要同时连接多个数据库,则采用
//$DB1 = $this->load->database('group_one',TRUE);
//$DB2 = $this->load->database('group_two',TRUE);
//注意:confing/database.php中的$db[xxxx]['pconnect'] = FALSE
$db1 = $this->load->database('default',TRUE);//注意第一个参数:值与配置文件中的第一个索引对应
$db2 = $this->load->database('additional', TRUE);//注意第一个参数:值与配置文件中的第一个索引对应
//下面开始进行操作
//首先,在第一个数据库test的t_news表中插入数据
$data1 = array(
'title' => '测试在CI框架中同时操作多个数据库',
'sub_title' => 'CI框架允许使用多个数据库进行操作。具体的内容请查看CI手册......',
'content' => '
如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:$DB1 =
$this->load->database(\'group_one\', TRUE);$DB2 =
$this->load->database(\'group_two\', TRUE);注意:改变 "group_one" 和
"group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。',
'create_time' => date('Y-m-d H:i:s'),
'author' => 'Longde',
'source' => '原创'
);
//插入之前先判断是否已存在
$db1->select('id');
$id1 = $db1->get_where('t_news',array('title' => $data1['title']))->result_array();
if(empty($id1))
{
//插入数据
$db1->insert('t_news',$data1);
//获取刚才插入数据时生成的ID值
$id1 = $db1->insert_id();
}
else
{
$id1 = $id1[0]['id'];
}
//从数据库中读取数据
$result1 = $db1->get_where('t_news',array('id' => $id1))->result_array();
//格式化输出刚才的读取结果
echo "<pre>";
print_r($result1);
//其次,在第二个数据库test_other的t_sys_user表中插入数据
$data2 = array(
'role_id' => 1,
'login_name' => 'admin',
'password' => md5('admin'),
'is_admin' => 1,
'create_time' => date('Y-m-d H:i:s'),
'status' => 0,
'is_locked' => 0
);
//插入之前先判断是否已存在
$db2->select('id');
$id2 = $db2->get_where('t_sys_user',array('login_name' => $data2['login_name']))->result_array();
if(empty($id2))
{
//插入数据
$db2->insert('t_sys_user',$data2);
//获取刚才插入数据时生成的ID值
$id2 = $db2->insert_id();
}
else
{
$id2 = $id2[0]['id'];
}
//从数据库中读取刚才插入的数据
$result2 = $db2->get_where('t_sys_user',array('id' => $id2))->result_array();
//格式化输出刚才的读取结果
echo "<pre>";
print_r($result2);
}
// ------------------------------------------------------------------------
}
/* End of file dbc.php */
/* Location: ./application/controllers/dbc.php */
值得注意的是,数据库配置文件database.php文件中的$db['group_name']['pconnect']值需要设置为FALSE,其次$db['group_name']中的索引group_name对应的就是“$DB1 = $this->load->database('group_name',TRUE)”;