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

一、连接数据库

在ThinkPHP框架中,它为我们提供了非常方便的方式连接数据库,我们可以通过简单的修改配置文件就可以连接上我们的mysql/oracle/SQL Server。

在我们的PHP中,大多是和Mysql进行配合使用的,所以我这里都是以Mysql为例的。安装好TP之后,我将我的目录从新调整成了这样

46c129392794fc1e5f6a9f71c6cc7c27.png

如果跟我一样入门且有兴趣的小伙伴,可以将自己的目录调整和我的一样,一步一步走下去,希望对你有所帮助

首先我们打开conf/database.php,解释一下里边的几个重要参数

e6963494ec9af54a9941aeb901436a3f.png

修改好数据库的配置之后,我们进入app/index/controller/Index.php中,打印一下数据库配置看一下

49e5d167f13183a885829127428e3ba0.png

10ced330492b44b98c19423b5d563e84.png

进行了以上的配置之后,我们就能够在控制器中随意的使用我们的数据库

e7e73f96ef758423580165e8e0398741.png

5241030feccf5c23124a1fbe2d97e550.png

我们还可以通过,给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配置

4a90bc4a65f1095b4fbc7cfa4439fe15.png

这种方式也能连接数据库(大家可以将数据库名修改一下,然后通过dump($res)打印一下连接的配置信息,就可以看见配置信息)

二、数据库的查询操作

首先我们要创建一个数据库,我这里使用的可视化mysql工具是navicat,创建一个course数据库,然后在该数据库下创建一个shulv_user表

a4770f694f563b33e8afe3d08ac3b0e3.png

创建好表之后,我们就来敲一下在控制器中对表进行操作的几种方法

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);

}

}

d6ed6498b2952a3c7bdd18da0bb41bc9.png

2,通过execute()的方式

$res = Db::execute("insert into shulv_user set username=?,password=?,email=?", [

'shulv',

md5('shulv'),

dump($res);

执行结果是1,表示有一条记录被影响,下面我们刷新一下数据库可以看到

123932d6fe5824a3b819113de6637926.png

3,通过Db类中的select()方法(返回表中所有记录,返回结果是一个二维数组。如果结果不存在,返回的会是一个空数组)

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

dump($res);

4ba6c7b054c99af6cfeceaab9e3a2f7b.png

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);

db3b5beb6548c6e4561897b2de470d7b.png

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

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

dump($res);

d85a6b44b1919594603f93591a078782.png

总结:由上边我们可以知道,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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值