本文实例讲述了thinkphp 框架数据库切换实现方法。分享给大家供大家参考,具体如下:
//数据库配置1
'db_config1' = [
// 数据库类型
'type' = 'mysql',
// 服务器地址
'hostname' = '127.0.0.1',
// 数据库名
'database' = 'thinkphp',
// 数据库用户名
'username' = 'root',
// 数据库密码
'password' = '',
// 数据库编码默认采用utf8
'charset' = 'utf8',
// 数据库表前缀
'prefix' = 'think_',
],
//数据库配置2
'db_config2' = 'mysql://root:1234@localhost:3306/thinkphp#utf8';
//默认数据库读取数据
$test = Db::name("test")- select();
//第二个数据库读取数据
$test1=Db::connect("DB_Config_1")- name("test")- select();
application/config.php
$db1 = [
'type'= 'mysql',
'hostname'= '127.0.0.1',
'database'= 'testA',
'username'= 'root',
'password'= '123456',
'hostport'= '3306',
'params'= [],
'charset'= 'utf8',
'prefix'= '', ],
$db2 = [
'type'= 'mysql',
'hostname'= '127.0.0.1',
atabase'= 'testB',
'username'= 'root',
'password'= '123456',
'hostport'= '3306',
'params'= [],
'charset'= 'utf8',
'prefix'= '', ],
Db::connect('db1')- query('select * from user where age=25');
我们可以在调用Db类的时候动态定义连接信息,例如:
Db::connect([
// 数据库类型
'type' = 'mysql',
// 数据库连接DSN配置
'dsn' = '',
// 服务器地址
'hostname' = '127.0.0.1',
// 数据库名
'database' = 'thinkphp',
// 数据库用户名
'username' = 'root',
// 数据库密码
'password' = '',
// 数据库连接端口
'hostport' = '',
// 数据库连接参数
'params' = [],
// 数据库编码默认采用utf8
'charset' = 'utf8',
// 数据库表前缀
'prefix' = 'think_',
]);
或者使用字符串方式:
Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
字符串连接的定义格式为:
数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集
注意:字符串方式可能无法定义某些参数,例如前缀和连接参数。
如果我们已经在应用配置文件(注意这里不是数据库配置文件)中配置了额外的数据库连接信息,例如:
//数据库配置1
'db_config1' = [
// 数据库类型
'type' = 'mysql',
// 服务器地址
'hostname' = '127.0.0.1',
// 数据库名
'database' = 'thinkphp',
// 数据库用户名
'username' = 'root',
// 数据库密码
'password' = '',
// 数据库编码默认采用utf8
'charset' = 'utf8',
// 数据库表前缀
'prefix' = 'think_',
],
//数据库配置2
'db_config2' = 'mysql://root:1234@localhost:3306/thinkphp#utf8';
我们可以改成
Db::connect('db_config1');
Db::connect('db_config2');
database.php是框架默认的数据库配置,里面写数据库1的信息,新建了个database2.php是放置数据库2的信息。
创建完数据库2之后,在config配置文件里,文件最后引入数据库2的配置信息
$db_con2 = require_once ('database2.php'),
'db_con2' = $db_con2,
选择数据库1的时候,我是用模型查询的直接写SQL语句:
//模型查询
$user = new User();
$result = $user- where('username', $data['username'])
- where('password', $data['password'])
- find();
或者
User::where('id','1')- find();
//普通结构查询
Db::table('think_user')- where('id',1)- find();
查询数据库2的信息时,调用普通查询语句:
$list = Db::connect('db_con2')
- table('nrf_amf_reg_info')
- alias('r')
- join('nrf_amf_server s','r.Id = s.nrf_amf_reg_Id','LEFT')
- paginate();
或者
$list = Db::connect('db_con2')- name('nrf_disc_record')- paginate();
注:nrf_amf_reg_info和nrf_disc_record为表名
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。