《TP5.0学习笔记---对Mysql数据库的操作(一)》

一、连接数据库
在ThinkPHP框架中,它为我们提供了非常方便的方式连接数据库,我们可以通过简单的修改配置文件就可以连接上我们的mysql/oracle/SQL Server。
在我们的PHP中,大多是和Mysql进行配合使用的,所以我这里都是以Mysql为例的。安装好TP之后,我将我的目录从新调整成了这样
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第1张图片
如果跟我一样入门且有兴趣的小伙伴,可以将自己的目录调整和我的一样,一步一步走下去,希望对你有所帮助
首先我们打开conf/database.php,解释一下里边的几个重要参数
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第2张图片
修改好数据库的配置之后,我们进入app/index/controller/Index.php中,打印一下数据库配置看一下
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第3张图片
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第4张图片
进行了以上的配置之后,我们就能够在控制器中随意的使用我们的数据库
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第5张图片
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第6张图片
我们还可以通过,给connect传递数组参数的方式,来链接数据库

$res = Db::connect([
    'type'            => 'mysql',
    'hostname'        => '127.0.0.1',
    'database'        => 'course',
    'username'        => 'root',
    'password'        => 'root_pw',
    'hostport'        => '3306',
    'charset'         => 'utf8',

]);

我们还可以通过dsn的方式进行连接

$res = Db::connect(“mysql://root:root@127.0.0.1:3306/course#utf8”);

解释一下每一个参数的含义:
在://之前的是数据库类型
后边依次就是 数据库名 数据库密码 数据库地址 端口号 数据库名 字符集

这个connect还接收一种配置:

$res = Db::connect( ‘db_congig01’);
  如果我们的应用配置文件,或者我们当前的模块配置文件中存在这个配置,那么他就会自动读取这个配置,比如我现在在config.php中添加一个db_congig01配置

《TP5.0学习笔记---对Mysql数据库的操作(一)》_第7张图片
这种方式也能连接数据库(大家可以将数据库名修改一下,然后通过dump($res)打印一下连接的配置信息,就可以看见配置信息)
二、数据库的查询操作
首先我们要创建一个数据库,我这里使用的可视化mysql工具是navicat,创建一个course数据库,然后在该数据库下创建一个shulv_user表
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第8张图片
创建好表之后,我们就来敲一下在控制器中对表进行操作的几种方法
1,通过query()的方式
现在我们在app/index/controller/index.php输入如下代码


namespace app\index\controller;

use think\Controller;
use think\Db;

class Index extends Controller
{
    public function index()
    {
        $res = Db::query("select * from shulv_user where id=?", [1]);
        dump($res);
    }
}

《TP5.0学习笔记---对Mysql数据库的操作(一)》_第9张图片
2,通过execute()的方式

$res = Db::execute("insert into shulv_user set username=?,password=?,email=?", [
            'shulv',
            md5('shulv'),
            '[email protected]'
        ]); 
        dump($res);

执行结果是1,表示有一条记录被影响,下面我们刷新一下数据库可以看到
《TP5.0学习笔记---对Mysql数据库的操作(一)》_第10张图片
3,通过Db类中的select()方法(返回表中所有记录,返回结果是一个二维数组。如果结果不存在,返回的会是一个空数组)

$res = Db::table('shulv_user')->select();
        dump($res);

《TP5.0学习笔记---对Mysql数据库的操作(一)》_第11张图片
4,通过Db类中的find()方法(返回一条记录,一般情况下会添加where条件,否则返回的是正序排列后的第一条记录,如果查询的记录不存在,返回的是NULL)

$res = Db::table('shulv_user')->find();
        dump($res);

5,通过Db类中的value()方法(返回一条记录,并且是记录中的某个字段值,一般也是有where条件的,如果没有则返回正序排列后的第一条记录,如果查询的记录不存在,返回的是NULL)

$res = Db::table('shulv_user')->value('username');
        dump($res);

6,通过Db类中的column ()方法(返回一个一维数组,数组中的value值就是我们要获取的列的值,如果不存在,返回的是一个空数组)

$res = Db::table('shulv_user')->column('username');
        dump($res);

这里写图片描述
它还可以传递第二个参数,如果存在第二个参数,就返回这个数组并且用第二个参数的值作为数组的key值

$res = Db::table('shulv_user')->column('email','username');
        dump($res);

这里写图片描述
总结:由上边我们可以知道,select()和column()返回的是多条记录,当查询的记录不存在时,返回空数组。find()和value()返回的是一条记录,如果查询的记录不存在则返回NULL
前边我们说的都是Db::table(),那么我们再说一个Db::name(),使用Db::table()时,我们传递的表名需要添加前缀,但是使用Db::name(),我们不需要添加表前缀。
另外,在Tp中,它为我们提供了一个助手函数
db(‘表名’)->select()(这里的表名不需要添加前缀)前边使用的find()、column()等函数,都可以使用这个助手函数的方式来使用

Db类和db()助手函数的区别就是:Db类使用的是单例模式(前边的博客有说到单例模式,不知道的小伙伴可以去看一下http://blog.csdn.net/self_realian/article/details/78249287)。而db()助手函数,会在每次调用的时候都实例化,但是,如果我们不想让他每次都实例化的时候,我们可以给它传递第三个参数false db(‘表名’,[],false)

你可能感兴趣的:(ThinkPHP,数据库)