thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例

本文实例讲述了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中的满足条件的数据进行拼接

ps:描述有不到位的敬请提出问题

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

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

(0)

相关推荐

  • tp5(thinkPHP5)框架连接数据库的方法示例

    本文实例讲述了thinkPHP5框架连接数据库的方法.分享给大家供大家参考,具体如下: 1.配置文件目录 tp5\application\database.php 通过配置文件来连接.. 也可以通过方法链接 在控制器里方法链接数据库 :查询时写法 和使用系统的DB类方法略有差异 // 使用方法配置数据库连接 public function data1 () { $DB = Db::connect([ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname'

  • ThinkPHP实现多数据库连接的解决方法

    ThinkPHP实现连接多个数据的时候,如果数据库在同一个服务器里的话只需要这样定义模型: class MembersModel extends Model{ protected $trueTableName = 'members.members'; //数据库名.表名(包含了前缀) } 然后就可以像D("Members");这样实例化模型,像普通模型那样操作了. 但后来发现他的数据库在两个不同的服务器,这样上面的方法就不行了. 这时候就需要使用TP的多数据连接特性了. 对此,查阅官方

  • tp5(thinkPHP5)框架实现多数据库查询的方法

    本文实例讲述了tp5(thinkPHP5)框架实现多数据库查询的方法.分享给大家供大家参考,具体如下: 引言: 有时候一个管理后台,需要涉及到多个数据库.比如,商城管理.直播管理.消息管理等等,它们都有自己的数据库.这个时候,就需要去连接多个数据库,进行处理了.thinkphp可以支持多个数据库连接. 如何处理呢? 1.进行多个数据库的配置 默认会连接database.php中的数据库信息. <?php // +------------------------------------------

  • ThinkPHP3.1新特性之多数据库操作更加完善

    通常情况下,如果一个应用只是操作同一个数据库(或者分布式数据库)的话,你只需要在项目配置文件中定义数据库连接信息即可.这里说的多数据库操作一般指的是在一个应用中会操作不同的数据库(包括同类型的和不同类型的数据库),甚至包括动态切换多数据库的情况. 对于早期版本的ThinkPHP来说,切换数据库需要使用高级模型,而现在的3.1版本则可以更加轻松的解决了. 新版对多数据的支持有下面几种方式,开发人员可以根据实际情况选择合适的方式操作: 1.模型定义数据库 如果只是简单的跨库操作,并且只是个别模型类的

  • tp5(thinkPHP5)框架数据库Db增删改查常见操作总结

    本文实例讲述了tp5(thinkPHP5)框架数据库Db增删改查常见操作.分享给大家供大家参考,具体如下: 添加数据insert $data = [ 'name_cn' => '张三', 'name_en' => 'jack', ]; $res = Db::name('style')->insert($data); 添加数据. INSERT INTO `tf_style` (`name_cn` , `name_en`) VALUES ('张三' , 'jack') tp5还可以通过ins

  • PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】

    本文实例讲述了PHP利用pdo_odbc实现连接数据库.分享给大家供大家参考,具体如下: 目的:从sql server数据库里面把某个视图文件调用出来,以键值对的方式显示在页面上. 利用pdo odbc来实现PHP连接数据库: 在PHP配置文件里面开启pdo_odbc.dll服务.重启Apache服务器. 在ThinkPHP5.1的项目中在模块里添加config添加规定好的样式数据库: 代码如下: <?php return [ // 数据库类型 'type' => 'sqlsrv', // 服

  • thinkPHP5实现的查询数据库并返回json数据实例

    本文实例讲述了thinkPHP5实现的查询数据库并返回json数据.分享给大家供大家参考,具体如下: TP5 实现查询数据库返回json数据(返回json数据函数实例) 返回结果: 复制代码 代码如下: {"code":0,"msg":"\u6570\u636e\u8fd4\u56de\u6210\u529f","count":1000,"data":[{"id":617,"t

  • PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】

    本文实例讲述了PHP7使用ODBC连接SQL Server2008 R2数据库.分享给大家供大家参考,具体如下: 我用的是:WampServer集成工具,PHP版本为7.0.29,数据库为SQL Server 2008 R2: 注意:在连接数据库时,需要进入X:\wamp\bin\apache\apache2.4.33\bin目录下的PHP配置文件:PHP.ini.进入里面修改相关配置.配置如下: extension=php_odbc.dll 把前面冒号去掉开启服务 并且 重启下WampServ

  • tp5(thinkPHP5)操作mongoDB数据库的方法

    本文实例讲述了tp5(thinkPHP5)操作mongoDB数据库的方法.分享给大家供大家参考,具体如下: 1.通过composer安装 composer require mongodb/mongodb 2.使用 <?php /** * @author: jim * @date: 2017/11/17 */ namespace app\index\controller; use think\Controller; use MongoDB\Driver\Manager; use MongoDB\C

  • thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例

    本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作.分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为数据库配置的数组或字符串例如: 字符串参数: Db::connect('mysql://root:1234@127.0.0.1:3306/thinkphp#utf8'); 配置数组参数: Db::connect([ // 数据库类型 'type' => 'mysql', //

  • TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例

    本文实例讲述了TP5(thinkPHP5)框架基于ajax与后台数据交互操作.分享给大家供大家参考,具体如下: Ajax最大的一点是页面无刷新,在页面内与服务器通信,给用户的体验非常好.可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本.并且减轻服务器的负担,ajax的原则是"按需取数据",可以最大程度的减少冗余请求,和响应对服务器造成的负担. 最近在用tp5开发企业微应用,很有收获,觉得最需要注意的是thinkphp

  • mysql远程跨库联合查询的示例

    目录 情况一2个库在同一台物理主机 情况二2个库不在同一台物理主机(即2个库分别在不同的物理主机) 注意:myemployees库和shoppingCart库在同一台物理主机,如果不在同一台物理主机该怎么办呢?下面我会介绍到. 情况一2个库在同一台物理主机 联合查询(不同的2个库,myemployees库和shoppingCart库),这2个库在同一台物理主机上,都在我本机. #联合查询(不同的2个库,myemployees库和shoppingCart库) SELECT emp01.`emplo

  • thinkphp5框架实现数据库读取的数据转换成json格式示例

    本文实例讲述了thinkphp5框架实现数据库读取的数据转换成json格式.分享给大家供大家参考,具体如下: 首先从数据库读数据,然后调用list_to_tree方法,再调用findchild方法,最后输出 $category = DB::name('Category'); $category_list = $category->select(); $data=$this->list_to_tree($category_list,'category_id','category_parent_i

  • thinkphp5 框架结合plupload实现图片批量上传功能示例

    本文实例讲述了thinkphp5 框架结合plupload实现图片批量上传功能.分享给大家供大家参考,具体如下: 在extend目录下新增目录uploader,并新建类Uploads <?php namespace uploader; class Uploads { public static function upfile($file, $path = 'images', $add_domain = false) { $res = ['errno' => 1, 'errmsg' =>

  • PHP框架Laravel中使用UUID实现数据分表操作示例

    本文实例讲述了PHP框架Laravel中使用UUID实现数据分表操作.分享给大家供大家参考,具体如下: UUID UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的. 说的简单点,它就是通过一个规则(如:业务标识号+年月日+当日自增数字格式化)生成的一个具有唯一性的辨识资讯.用于关联我们的一些额数据和资讯. 实例 之前在做一个项目的时候用到这个东西,现在我就用Laravel框架写一个简单的demo 前端form表单 <!DOCTYPE html> <html&g

  • express使用Mongoose连接MongoDB操作示例【附源码下载】

    本文实例讲述了express使用Mongoose连接MongoDB操作.分享给大家供大家参考,具体如下: 为何要学Mongoose? Mongoose是MongoDB的一个对象模型工具,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单. 0.安装nodejs和mongoDB->MongoDB的安装 1.创建express工程 2.进入工程目录安装mongoose并引入依赖: npm install --save mongoose 3.使

  • Yii框架连表查询操作示例

    本文实例讲述了Yii框架连表查询操作.分享给大家供大家参考,具体如下: Join //表连接 //查询出学生.班级.校区.记录表的所有数据 $data=Jf_record::find() ->join('join','jf_stu','jf_record.sid=jf_stu.sid') ->join('join','jf_class','jf_stu.cid=jf_class.cid') ->join('join','jf_school','jf_class.xid=jf_school

  • mysql跨库事务XA操作示例

    本文实例讲述了mysql跨库事务XA操作.分享给大家供大家参考,具体如下: 前一段时间在工作中遇到了跨库事务问题,后来在网上查询了一下,现在做一下整理和总结. 1.首先要确保mysql开启XA事务支持 SHOW VARIABLES LIKE '%XA%' 如果innodb_support_xa的值是ON就说明mysql已经开启对XA事务的支持了. 如果不是就执行: SET innodb_support_xa = ON <?PHP $dbtest1 = new mysqli("172.20.

  • yii框架数据库关联查询操作示例

    本文实例讲述了yii框架数据库关联查询操作.分享给大家供大家参考,具体如下: <?php namespace app\controllers; use yii\web\Controller; use app\models\Customer; class CustomerController extends Controller{ //根据顾客名字查询出所有的订单信息 public function actionIndex(){ $customer = Customer::find()->whe

随机推荐