老莫的笔记本  
  
查看: 968|回复: 0

TP5 链接数据库

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2018-8-12 00:10:30 | 显示全部楼层 |阅读模式
1. 静态链接:应用/模块中的数据库配置文件 database.php  【使用场景: 这是建立在数据库只有一个的基础上】
2. 动态链接 : 入口 DB.php 中的connect(参数【可是是数组可以是字符串】) 方法   【使用场景:这是建立在需要在多个数据库之间转换环境的基础上】

使用:
第一步:添加手工配置文件: config/database.php  
第二步:仿照原数据库配置文件重新返回一串数据库配置信息: database.php 内容如下
  1. <?php
  2. return [
  3.      // 数据库类型
  4.     'type'            => 'mysql',
  5.     // 服务器地址
  6.     'hostname'        => '127.0.0.1',
  7.     // 数据库名
  8.     'database'        => 'tp5test',
  9.     // 用户名
  10.     'username'        => 'root',
  11.     // 密码
  12.     'password'        => '',
  13.     // 端口 没有修改的话是3306
  14.     'hostport'        => '',
  15.     // 连接dsn
  16.     'dsn'             => '',
  17.     // 数据库连接参数
  18.     'params'          => [],
  19.     // 数据库编码默认采用utf8
  20.     'charset'         => 'utf8',
  21.     // 数据库表前缀
  22.     'prefix'          => '',
  23.     // 数据库调试模式
  24.     'debug'           => true,
  25.     // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
  26.     'deploy'          => 0,
  27.     // 数据库读写是否分离 主从式有效
  28.     'rw_separate'     => false,
  29.     // 读写分离后 主服务器数量
  30.     'master_num'      => 1,
  31.     // 指定从服务器序号
  32.     'slave_no'        => '',
  33.     // 是否严格检查字段是否存在
  34.     'fields_strict'   => true,
  35.     // 数据集返回类型
  36.     'resultset_type'  => 'array',
  37.     // 自动写入时间戳字段
  38.     'auto_timestamp'  => false,
  39.     // 时间字段取出后的默认时间格式
  40.     'datetime_format' => 'Y-m-d H:i:s',
  41.     // 是否需要进行SQL性能分析
  42.     'sql_explain'     => false,
  43. ];
复制代码
第三步:在方法中完成数据库的链接与查询
3.1 获取实例化后的数据库对象
3.2 导入数据库入口类 db   :      use think\Db;   注意 导入 和继承不一样
3.3 贴上全部静态的方法:
  1. class Dbt
  2. {
  3.     public function mv1()
  4.     {
  5.         // 1.获取数据库的链接实例/对象  并且保存到 一个变量中
  6.             $link = Db::connect();        
  7.         
  8.         // 2.用链接实例调用查询类的查询方法  并将查询到的值 保存早一个变量中
  9.         $req = $link->table('staff')->select();
  10.         
  11.         dump($req);
  12.     }
  13.     public function mv2()
  14.     {
  15.         return '进来了    }
  16. }
复制代码


动态方法:在静态的基础上, 去掉database.php 文件 ,然后在  Db::connect() ; 函数中 传入参数
  1. class Dbt
  2. {
  3.     public function mv3()
  4.     {
  5.         $dbconfig =[
  6.             'type'=>'mysql',       //数据库类型
  7.             'hostname'=>'127.0.0.1',   //数据库地址
  8.             'username'=>'root',           //数据库用户名
  9.             'password'=>'',         //数据库密码
  10.             'database'=>'tp5test',    //数据库名称
  11.         ];
  12.         $link = Db::connect($dbconfig);
  13.         $a = $link->table('staff')->select();
  14.         dump($a);
  15.     }
  16. }
复制代码

还有一种链接字符串的配置: 【就是把用户名密码等信息 都拼接在字符串中】
该字符串格式:
  1.     public function mv4()
  2.     {
  3.         //  数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集
  4.         $b = 'mysql://root:@127.0.0.1:3306/tp5test#utf8        $link = Db::connect($b);
  5.         $a = $link->table('staff')->select();
  6.         dump($a);
  7.     }
  8. }
复制代码
下面写一个简化版
  1. // 简化版  先还原config/database.php
  2. class Dbt
  3. {
  4.     public function mv5()
  5.     {
  6.         // 其实就是代表DB类可以直接调用所有的查询方法
  7.         $a = Db::table('staff')->select();
  8.         dump($a);
  9.     }
  10. }
复制代码







回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表