企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
当你需要使用多个数据库连接的时候,就需要使用connect方法动态切换到另外一个数据库连接,假设存在另外一个数据库test,并且复制data过去更名为test,然后测试下面的示例: ![](https://box.kancloud.cn/999b16ea37a628459e3a574ef1d1a2e5_640x333.png) 页面Trace的显示信息可以看出来使用了两次数据库连接和执行了三次查询,并且数据库连接切换并没有影响默认的查询(第三个查询还是使用的默认数据库配置连接,test数据库中并不存在data表,如果连接的还是第二个数据库连接的话肯定会报错)。 ![](https://box.kancloud.cn/8bddc93b7207232cfbf3bb3a3d68a437_640x171.png) 有时候,我们只需要设置一些基本的数据库配置参数,可以简化成一个字符串格式定义(该格式为ThinkPHP使用规范,而不是PDO连接规范,不要和DSN混淆起来): > Db::connect('mysql://root@127.0.0.1/demo#utf8') ->query('select * from data where id = 1'); 字符串格式的连接信息规范格式如下: > 数据库类型://用户名[:用户密码]@数据库服务器地址[:端口]/数据库名[?参数 Db类的`connect方法`会返回一个数据库连接对象实例,相同的连接参数返回的是同一个对象实例,除非你强制重新实例化,例如: ![](https://box.kancloud.cn/15b085db0e4aa9232e50b7805154092f_640x256.png) 这样,每次调用都会重新实例化数据库的连接类。为了便于统一管理,你可以把数据库配置参数纳入配置文件,例如在应用配置文件中添加: ![](https://box.kancloud.cn/7b61e9572bd45e584fed4c975d28bebe_640x259.png) 或者使用字符串方式定义'db_config' => 'mysql://root@127.0.0.1/demo', 上面的db_config配置参数不是在数据库配置文件中定义,而是在应用配置文件或者模块配置文件中定义。 然后,使用下面的方式来动态连接获取切换连接 > Db::connect('db_config') ->query('select * from data where id=:id', ['id'=>3]); 当connect方法传入的连接参数是字符串并且不包含/等特殊符号的话,表示使用的是预定义数据库配置参数。