银河体育 使用ThinkPHP实现多数据库连接功能

日期:2021-02-13 01:20:26 浏览量: 161

使用ThinkPHP实现多数据库连接功能吗?许多新手对此不太清楚。为了帮助您解决此问题,下面的编辑器将为您详细解释。有这种需要的人可以来学习。我希望你能有所收获。

ThinkPHP实现连接多个数据时,如果数据库位于同一服务器中,则只需定义如下模型:

class MembersModel extends Model{
protected $trueTableName = 'members.members'; //数据库名.表名(包含了前缀)
}

然后,您可以像D(“ Members”);一样实例化模型。并像普通模型一样操作它。

但是随后发现他的数据库位于两个不同的服务器上,因此上述方法无效。

这时,您需要使用TP的多数据连接功能。

在这方面,在查阅了官方文档乐鱼体育网 ,对其进行了测试和更正之后,达成了以下解决方案:

php库存管理系统_php扩展库有哪些_php数据库连接技术

要建立多个数据连接,请首先构造数据库配置参数。但是,如果每次建立多数据库连接时都创建一个数据库配置数组,这将非常麻烦亚博代理推荐 ,因此最好将其写入配置文件中。在这里怎么写还需要一些技巧。

true,
'default_module'=>'Index',
'ROUTER_ON'=>TRUE,
'DATA_RESULT_TYPE'=>1,
'SHOW_RUN_TIME'=>true,   // 运行时间显示
'SHOW_ADV_TIME'=>true,   // 显示详细的运行时间
'SHOW_DB_TIMES'=>true,   // 显示数据库查询和写入次数
'SHOW_CACHE_TIMES'=>true,  // 显示缓存操作次数
'SHOW_USE_MEM'=>true,   // 显示内存开销
'HTML_FILE_SUFFIX'=>'.shtml',  // 默认静态文件后缀
'HTML_CACHE_ON' =>false,   // 默认关闭静态缓存
'HTML_CACHE_TIME'=>60,   // 静态缓存有效期
'HTML_READ_TYPE'=>1,   // 静态缓存读取方式 0 readfile 1 redirect
'HTML_URL_SUFFIX'=>'.shtml', // 伪静态后缀设置
//默认数据库链接
'DB_TYPE'=>'mysql',
'DB_HOST'=>'localhost',
'DB_NAME'=>'news',
'DB_USER'=>'root',
'DB_PWD'=>'123',
'DB_PORT'=>'3306',
'DB_PREFIX'=>'news_',
//我的第一个数据库连接
'DB_BBS'=>array(
'dbms' => 'mysql',
'username' => 'discuz',
'password' => '123',
'hostname' => 'localhost',
'hostport' => '3306',
'database' => 'discuz'
),
//第二个数据库链接,
'DB_NEWS'=>array(
'dbms'=>'mysql',
'username'=>'root',
'password'=>'123',
'hostname'=>'localhost',
'hostport'=>'3306',
'database'=>'news'
)
);
return $config;
?>

到目前为止,我们可以使用C(“ DB_BBS”)和C(“ DB_NEWS”)来获取数据库配置数组。

配置已完成,现在您需要实例化模型。因为我们的模型需要使用两个不同的数据库连接,所以在项目配置文件中默认使用数据库配置。如果创建表模型,例如UserModel.class.php,

如果您使用D(“ User”);但是php数据库连接技术,如果当前默认数据库中没有用户表og真人 ,则会报告错误。因此,我们必须建立一个空模型。空模型将不会选择表格。

有两种创建空模型的方法。都$ dao = D();和$ dao = new Model();可以使用。

$dao=D();

实例化模型后,我们需要添加一个数据库模型;

$dao->addConnect(C("DB_BBS"),1,true);
$dao->addConnect(C("DB_NEWS"),2,true);

讨论此addConnect(); 1. 0. 3和1. 0. 4之间的函数原型不同。

1. 0. 3中的原型为:

boolean addConnect (mixed $config, mixed $linkNum, [boolean $eqType = true])

1. 0. 4中的原型为:

boolean addConnect (mixed $config, mixed $linkNum)

php扩展库有哪些_php数据库连接技术_php库存管理系统

第三个参数丢失。

第一个参数是数据库的配置数组,第二个参数是添加的连接的编号。切换数据库连接时,需要提供此数字。请注意,内置数据库连接序列号为0,因此附加数据库连接序列号应从1开始。第三个参数是亚博电子竞技俱乐部 ,如果两个数据库是同一连接,则为true;

添加数据库连接后,您可以随时切换数据库连接。例如真人游戏 ,如果我们要使用数据库DB_NEWS,只需编写:

$dao->switchConnect(2);

由于这里只是与数据库的连接,因此未选择任何表,因此您需要选择下一个表。

请注意,这里的表名是全名,即表的前缀加上表名。因为我们在连接数据库的配置数组中没有前缀。我认为应该定义它php数据库连接技术,但我不知道。就是这样。

$dao->table("cdb_members");

php库存管理系统_php数据库连接技术_php扩展库有哪些

之后,您可以像使用普通模型一样使用此模型。

例如,我要查询传递ID的用户的所有信息:

$map=array("id"=>$_GET["id"]);
$res=$dao->find($map);

您可以查看查询是否成功。

dump($res);

如果要立即使用DB_BBS数据库表,只需再次切换连接;

$dao->switchConnect(2);

php扩展库有哪些_php数据库连接技术_php库存管理系统

然后选择要查询的表。请记住,切换模型后必须再次选择表格,否则会出错。

之后,它可以像普通模型一样操作。

以下内容指出了手册中的几个问题:

1.在实例化多个数据库连接时建立了一个非空模型。 (这似乎是错误的。)这可能会出错。建议创建一个空模型;

2. addConnect()的参数在不同版本中有所不同,并且未在手册中编写;

3.在创建一个空模型后需要选择一个表,这不在本手册中。

鉴于上述几点,ThinkPHP用户可以根据不同的版本进行相应的调整。

阅读以上内容对您有帮助吗?如果您想进一步了解相关知识或阅读更多相关文章,请关注Yisu Cloud行业信息频道,感谢您对Yisu Cloud的支持。