gpt4 book ai didi

thinkphp 框架数据库切换实现方法分析

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章thinkphp 框架数据库切换实现方法分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了thinkphp 框架数据库切换实现方法。分享给大家供大家参考,具体如下:

数据库配置:

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//数据库配置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' ;
?
1
2
3
4
//默认数据库读取数据
$test = Db::name( "test" )->select();
//第二个数据库读取数据
$test1 =Db::connect( "DB_Config_1" )->name( "test" )->select();

application/config.php 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$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类的时候动态定义连接信息,例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Db::connect([
   // 数据库类型
   'type'    => 'mysql' ,
   // 数据库连接DSN配置
   'dsn'     => '' ,
   // 服务器地址
   'hostname'  => '127.0.0.1' ,
   // 数据库名
   'database'  => 'thinkphp' ,
   // 数据库用户名
   'username'  => 'root' ,
   // 数据库密码
   'password'  => '' ,
   // 数据库连接端口
   'hostport'  => '' ,
   // 数据库连接参数
   'params'   => [],
   // 数据库编码默认采用utf8
   'charset'   => 'utf8' ,
   // 数据库表前缀
   'prefix'   => 'think_' ,
]);

或者使用字符串方式:

?
1
Db::connect( 'mysql://root:1234@127.0.0.1:3306/thinkphp#utf8' );

字符串连接的定义格式为:

数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集 。

注意:字符串方式可能无法定义某些参数,例如前缀和连接参数.

如果我们已经在应用配置文件(注意这里不是数据库配置文件)中配置了额外的数据库连接信息,例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//数据库配置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' ;

我们可以改成 。

?
1
2
Db::connect( 'db_config1' );
Db::connect( 'db_config2' );

thinkphp 框架数据库切换实现方法分析

database.php是框架默认的数据库配置,里面写数据库1的信息,新建了个database2.php是放置数据库2的信息.

创建完数据库2之后,在config配置文件里,文件最后引入数据库2的配置信息 。

?
1
2
$db_con2 = require_once ( 'database2.php' ),
'db_con2' => $db_con2 ,

代码中引用:

  。

选择数据库1的时候,我是用模型查询的直接写SQL语句:

?
1
2
3
4
5
//模型查询
$user = new User();
$result = $user ->where( 'username' , $data [ 'username' ])
         ->where( 'password' , $data [ 'password' ])
         ->find();

或者 。

?
1
2
3
User::where( 'id' , '1' )->find();
//普通结构查询
Db::table( 'think_user' )->where( 'id' ,1)->find();

查询数据库2的信息时,调用普通查询语句:

?
1
2
3
4
5
$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();

或者 。

?
1
$list = Db::connect( 'db_con2' )->name( 'nrf_disc_record' )->paginate();

注:nrf_amf_reg_info和nrf_disc_record为表名 。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助.

原文链接:https://blog.csdn.net/qq_42176520/article/details/81007503 。

最后此篇关于thinkphp 框架数据库切换实现方法分析的文章就讲到这里了,如果你想了解更多关于thinkphp 框架数据库切换实现方法分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com