thinkphp5第6课:操作数据库

ThinkPHP5内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。采用PDO方式,目前包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。

如果应用需要使用数据库,必须配置数据库连接信息。

打开applicaton目录下的database.php

<?php

return [
    // 数据库类型
    'type'            => 'mysql',
    // 服务器地址
    'hostname'        => '127.0.0.1',
    // 数据库名
    'database'        => '',
    // 用户名
    'username'        => 'root',
    // 密码
    'password'        => '',
    // 端口
    'hostport'        => '',
    // 连接dsn
    'dsn'             => '',
    // 数据库连接参数
    'params'          => [],
    // 数据库编码默认采用utf8
    'charset'         => 'utf8',
    // 数据库表前缀
    'prefix'          => '',
    // 数据库调试模式
    'debug'           => true,
    // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
    'deploy'          => 0,
    // 数据库读写是否分离 主从式有效
    'rw_separate'     => false,
    // 读写分离后 主服务器数量
    'master_num'      => 1,
    // 指定从服务器序号
    'slave_no'        => '',
    // 自动读取主库数据
    'read_master'     => false,
    // 是否严格检查字段是否存在
    'fields_strict'   => true,
    // 数据集返回类型
    'resultset_type'  => 'array',
    // 自动写入时间戳字段
    'auto_timestamp'  => false,
    // 时间字段取出后的默认时间格式
    'datetime_format' => 'Y-m-d H:i:s',
    // 是否需要进行SQL性能分析
    'sql_explain'     => false,
];

数组中的type:设置连接的数据库类型为mysql,

hostname设置数据库所在地址,

database需要设置连接的数据库名称,比如我们要操作myschool数据库,这里必须设置:database=>'myschool',

username设置为连接数据库的用户名

password设置为连接数据库的地址

prefix为数据表的前缀,假如数据库中所有的数据表都有统一的前缀tk_,那么prefix=>'tk_'

接下来我们要准备一个myschool数据库和一个student数据表

thinkphp5第6课:操作数据库

 

我们在application的Index目录下的controller目录中,新建一个Student.php文件

thinkphp5第6课:操作数据库

为了将来更好地移植到linux操作系统中,Student.php文件的首字母必须大写

我们来看一下这个文件的代码

<?php


namespace app\index\controller;


use think\Controller;
use think\Db;
use think\exception\PDOException;

/**
 * Class Student
 */
class Student extends Controller
{
    public function add()
    {
        $data = array('no' => 1001, 'name' => '张三', 'sex' => '男', 'age' => 20);
        try {
            $ret = Db::name('student')->insert($data);
            echo '添加成功';
        } catch (PDOException $ex) {
            die($ex->getMessage());
        }

    }

}

在上面的方法中,我们使用Db类中的静态方法name()来指定操作数据表student,然后调用 insert()方法添加数据。

可以看出,name()方法属于静态方式,而insert()方法属于普通方法

insert 方法添加数据成功返回添加成功的条数,insert 正常情况返回 1

并且,我们使用异常处理try...catch...,当添加数据失败时,显示错误信息并终止程序

需要注意的是Db类和PDOException的命名空间

Db类的命名空间:think

PDOException的命名空间:think\exception

总结

通过完成学生的添加,学会Db类的简单使用。

上一篇:Thinkphp5-未定义数据库类型


下一篇:thinkphp5设置数据库表前缀,tp5在model中设置prefix