ThinkPHP数据库操作之存储过程,数据集,分布式数据库的示例分析

  介绍

这篇文章给大家分享的是有关ThinkPHP数据库操作之存储过程,数据集,分布式数据库的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>存储过程

5.0支持存储过程,如果我们定义了一个数据库存储过程sp_query,可以使用下面的方式调用:

result 美元;=,Db:查询(& # 39;call  sp_query (8) & # 39;);

返回的是一个二维数组,也可以使用参数绑定,例如:

result 美元;=,Db:查询(& # 39;call  sp_query (?) & # 39;, [8]);//,或者命名绑定result 美元;=,Db:查询(& # 39;call  sp_query (id) & # 39;, [& # 39; id # 39;=祝辞8]);

<强>数据集

数据库的查询结果也就是数据集,默认的配置下,数据集的类型是一个二维数组,我们可以配置成数据集类,就可以支持对数据集更多的对象化操作,需要使用数据集类功能,可以配置数据库的resultset_type参数如下:

return [,,,//,数据库类型   ,,,& # 39;类型# 39;,=祝辞,& # 39;mysql # 39;,,,,,//,数据库连接DSN配置   ,,,& # 39;dsn # 39;,=祝辞,& # 39;& # 39;,,,,,//,服务器地址   ,,,& # 39;主机名# 39;,=祝辞,& # 39;127.0.0.1 # 39;,,,,,//,数据库名   ,,,& # 39;数据库# 39;,=祝辞,& # 39;thinkphp& # 39;,,,,,//,数据库用户名   ,,,& # 39;用户名# 39;,=祝辞,& # 39;根# 39;,,,,,//,数据库密码   ,,,& # 39;密码# 39;,=祝辞,& # 39;& # 39;,,,,,//,数据库连接端口   ,,,& # 39;hostport& # 39;,=祝辞,& # 39;& # 39;,,,,,//,数据库连接参数   ,,,& # 39;params # 39;,=祝辞,[],,,,,//,数据库编码默认采用utf8   ,,,& # 39;charset # 39;,=祝辞,& # 39;use utf8 # 39;,,,,,//,数据库表前缀   ,,,& # 39;前缀# 39;,=祝辞,& # 39;think_& # 39;,,,,,//,数据集返回类型   ,,,& # 39;resultset_type& # 39;,=祝辞,& # 39;收集# 39;];

返回的数据集对象是认为\收集,提供了和数组无差别用法,并且另外封装了一些额外的方法。可以直接使用数组的方式操作数据集对象,例如:

//,获取数据集   users 美元;=,Db:名称(& # 39;用户# 39;)→选择();//,直接操作第一个元素   美元$ item =,用户[0];//,获取数据集记录数   $ count =, count($用户);//,遍历数据集   foreach (users 美元;as  $ user) {,,, echo  $ user(& # 39;名字# 39;];,,,,echo  $ user (& # 39; id # 39;);   }

需要注意的是,如果要判断数据集是否为空,不能直接使用空判断,而必须使用数据集对象的isEmpty方法判断,例如:

users 美元;=,Db:名称(& # 39;用户# 39;)→选择();如果(用户→美元isEmpty ()) {,,, echo  & # 39;数据集为空& # 39;;   }

集合类包含了下列主要方法:

 ThinkPHP数据库操作之存储过程,数据集,分布式数据库的示例分析

如果只是个别数据的查询需要返回数据集对象,则可以使用

Db::名称(& # 39;用户# 39;),,,,→fetchClass(& # 39; \认为\收藏# 39;),,,,→选择();

<强>分布式数据库

ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。

配置database.deploy为1可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下:

//分布式数据库配置定义   return  [,,,//,启用分布式数据库   ,,,& # 39;部署# 39;,=祝辞,1,,,,,//,数据库类型   ,,,& # 39;类型# 39;,=祝辞,& # 39;mysql # 39;,,,,,//,服务器地址   ,,,& # 39;主机名# 39;,=祝辞,& # 39;192.168.1.1,192.168.1.2& # 39;,,,,,//,数据库名   ,,,& # 39;数据库# 39;,=祝辞,& # 39;演示# 39;,,,,,//,数据库用户名   ,,,& # 39;用户名# 39;,=祝辞,& # 39;根# 39;,,,,,//,数据库密码   ,,,& # 39;密码# 39;,=祝辞,& # 39;& # 39;,,,,,//,数据库连接端口   ,,,& # 39;hostport& # 39;,=祝辞,& # 39;& # 39;]

连接的数据库个数取决于主机名定义的数量,所以即使是两个相同的IP也需要重复定义,但是其他的参数如果存在相同的可以不用重复定义,例如:

& # 39;hostport& # 39;=祝辞& # 39;3306年,3306年& # 39;

& # 39;hostport& # 39;=祝辞& # 39;3306 & # 39;

等效。

& # 39;用户名# 39;=祝辞& # 39;user1 # 39;   & # 39;密码# 39;=祝辞& # 39;pwd1& # 39;,

ThinkPHP数据库操作之存储过程,数据集,分布式数据库的示例分析