thinkPHP5多数据库连接,跨数据连接查询,跨库链表查询

1.多数据库连接

方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为数据库配置的数组或字符串例如:

字符串参数:

Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8');
配置数组参数:

Db::connect([
    // 数据库类型
    'type'        => 'mysql',
    // 数据库连接DSN配置
    'dsn'         => '',
    // 服务器地址
    'hostname'    => '127.0.0.1',
    // 数据库名
    'database'    => 'thinkphp',
    // 数据库用户名
    'username'    => 'root',
    // 数据库密码
    'password'    => '',
    // 数据库连接端口
    'hostport'    => '',
    // 数据库连接参数
    'params'      => [],
    // 数据库编码默认采用utf8
    'charset'     => 'utf8',
    // 数据库表前缀
    'prefix'      => 'think_',
]);

详细用法参考thinkphp5完全开发手册:https://www.kancloud.cn/manual/thinkphp5/118059

方法2:在应用配置文件里面添加多个数据库配置,例如:

'database1' => []//数据库配置数组 
'database2' => []//数据库配置数组 

在需要连接时,使用Db::connect("database1")连接指定数据库,执行数据库操作时直接在连接后链式写函数,例如:

$db = Db::connect("database1");

$db->name("table")->select();


2跨数据库连接查询

方法1::利用Db::query("sql")方法执行sql语句,在sql语句中使用database.table的方式指明数据库及表,例如:

连接查询数据库database1中表table1与数据库database2中表table2中id相等的数据

select * from database1.table1 as t1 inner join database2.table2 as t2 where t1,id=t2.id

方法2:利用循环分别查询不同数据库

现在database1中查询数据,遍历查询结果集,分别查询database2中的满足条件的数据进行拼接

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
感谢您的提问。对于您的问题,您可以按照以下步骤来配置链接多个数据库,并查询数据: 1. 首先,在thinkphp5中,您需要在database.php配置文件中配置多个数据库连接信息,例如: ```php return [ 'db1' => [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库编码默认采用utf8 'charset' => 'utf8mb4', ], 'db2' => [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库编码默认采用utf8 'charset' => 'utf8mb4', ], ]; ``` 2. 接下来,在需要使用不同数据库的地方,您可以使用Db类的connect方法来切换数据库连接,例如: ```php // 切换到db1数据库 Db::connect('db1')->name('user')->where('id', 1)->find(); // 切换到db2数据库 Db::connect('db2')->name('user')->where('id', 1)->find(); ``` 3. 最后,您可以使用查询构建器来执行数据查询操作,例如: ```php // 查询db1数据库中的user表中id为1的记录 Db::connect('db1')->name('user')->where('id', 1)->find(); // 查询db2数据库中的user表中id为1的记录 Db::connect('db2')->name('user')->where('id', 1)->find(); ``` 希望我的回答对您有所帮助,如果您还有其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值