1. 简单说明

  1. 配置文件的位置是 config\datebase.php。
  2. 注意 hostname:如果是Linux 、MacOS操作系统 填写127.0.0.1 将无效,必须填写localhost
  3. 我们需要用到这几个文件中的类
    • Db.php
      • 位置:项目名称 /thinkphp/library/think/Db.php
      • 这个类它是数据库的入口
      • use think\db\Connection; 带表它使用了该命名空间下的驱动….
      • Db类静态代用Query类中的方法。 query类的 namespace :\think\db\Query
    • Query.php
      • 绝大多数的数据库操作方法都在这个类中

2. 配置文件连接数据库

2.1 全局配置

写入数据库的全局配置信息
image.png

调试debug模式
image.png

控制器:

  1. <?php
  2. namespace app\database\controller;
  3. use think\Db;
  4. class Conn
  5. {
  6. // 使用全局配置信息连接数据库
  7. public function conn1 ()
  8. {
  9. return Db::table('wh_build')
  10. ->where('IDX', '=', 12)
  11. ->value('BUILDNAME');
  12. }
  13. }

postman 测试:
image.png

2.2 动态配置

需要使用 Query 类的 connection() 方法,为了使配置更加清晰,我在数据库的配置文件下单独写入配置信息

database.php

  1. <?php
  2. // 数据库配置1
  3. 'db_config1' => [
  4. // 数据库类型
  5. 'type' => 'mysql',
  6. // 服务器地址
  7. 'hostname' => 'localhost',
  8. // 数据库名
  9. 'database' => 'e_ort',
  10. // 用户名
  11. 'username' => 'root',
  12. // 密码
  13. 'password' => 'wide',
  14. // 端口
  15. 'hostport' => '3306',
  16. // 数据库编码默认采用utf8
  17. 'charset' => 'utf8',
  18. ],

控制器:

  1. <?php
  2. // 动态连接数据库
  3. public function conn2() {
  4. try {
  5. $res = Db::connect('db_config1')
  6. ->table('wh_build')
  7. ->where('IDX', '=', 13)
  8. ->value('BUILDNAME');
  9. } catch (Exception $e) {
  10. return 'conn fail';
  11. }
  12. return is_null($res) === false ? json($res) : '没有查到数据!';
  13. }

postman 测试:
image.png

2.3 DSN连接

1. 同上先在数据库的全局配置文件中填写配置项信息

  1. <?php
  2. //数据库配置2
  3. 'db_config2' => 'mysql://root:wide@127.0.0.1:3306/e_ort#utf8',
  4. // 数据库类型://username:password@hostIP:port/db_name#charset;


2. 测试代码**

  1. <?php
  2. // 3.DSN 连接配置数据库
  3. public function conn3()
  4. {
  5. $res = Db::connect('db_config2')
  6. ->table('wh_build')
  7. ->where('IDX', '=', 16)
  8. ->value('BUILDNAME');
  9. return is_null($res) === false ? json_encode($res) : '没有查到数据!';
  10. }

3. 其他补充说明

3.1 type的配置说明

type 数据库
mysql Mysql
sqlite SqLite
pgsql PgSQL
sqlsrv SqlServer


这其中是没有oracle数据库的,如果需要可以自己建立 工具类,调用静态方法进行查询**

3.2 连接说明

如果我们将 2.2 , 2.3中的配置信息写到方法中的话,那么仅仅在调用的时候会执行一次,也就是说一次生效

3.3 其他配置项说明

参数名 描述 默认值
type 数据库类型 无
hostname 数据库地址 127.0.0.1
database 数据库名称 无
username 数据库用户名 无
password 数据库密码 无
hostport 数据库端口号 无
dsn 数据库连接dsn信息 无
params 数据库连接参数 空
charset 数据库编码 utf8
prefix 数据库的表前缀 无
debug 是否调试模式 false
deploy 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 0
rw_separate 数据库读写是否分离 主从式有效 false
master_num 读写分离后 主服务器数量 1
slave_no 指定从服务器序号 无
fields_strict 是否严格检查字段是否存在 true
resultset_type 数据集返回类型 array
auto_timestamp 自动写入时间戳字段 false
sql_explain 是否需要进行SQL性能分析 开启调试有效 false
query 指定查询对象 think\db\Query

3.4 单独的模块配置项

除了全局配置外,还可以对单独的某一个模块进行配置

3.5 断线重连

3.6 数据库调试模式