## 连接数据库
我们说数据库,就像一个图书馆,数据库中的数据就像是图书馆中的图书。
我们如果想找到图书馆中的一本书,需要获得如下信息。
#### 图书馆信息:
1. 这个图书馆位于哪所```学校```。
2. 这个图书馆是这个学校的```第几图书馆```。
3. 我们需要一个借阅证,上面有正确的能借阅的```用户名```信息。
4. 我们需要知道从哪个```门```进入图书馆(并不是每个图书馆开放的都是正门)
5. 我们需要知道书位于哪个```书架```上。
6. 根据正确的```索引号```找到这本书。
#### 数据库信息
其实数据库也一样,我们需要知道以下信息。
1. 数据库系统安装在哪?我们安装了XAMPP,数据库系统安装在本地:```localhost```。
2. 我们要找哪个数据库?
我们在本章第一节的时候,已经新建了一个数据库,起名为:```tp5```。
3. 需要一个用户名及其密码,xampp安装后,默认用户名为```root``,密码为空。
4. 从哪个端口连接数据库,xampp安装后,mysql访问采用默认的端口,即```3306```。
5. 要操作哪个数据表:```teacher```。
6. 用正确的```语句```去找到我们想要的数据。
#### 配置数据库
thinkphp5将数据库的配置文件进行单独的分离,即<span class="text-danger">application\database.php</span>。
在数据库的配置文件中,我们需要修改以下两处。
1. 将 database 的值设置为 tp5
2. 将 prefix 的值设置为 yunzhi_
> 在配置文件中,hostname可以是127.0.0.1,也可以是localhost。这个问题前面讲过了,IP地址和域名的问题,都代表:本机。
增加配置信息后代码如下:
~~~
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'tp5',
// 用户名
'username' => 'root',
// 密码
'password' => '',
// 端口
'hostport' => '',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'yunzhi_',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型 array 数组 collection Collection对象
'resultset_type' => 'array',
// 是否自动写入时间戳字段
'auto_timestamp' => false,
// 是否需要进行SQL性能分析
'sql_explain' => false,
];
~~~
### 测试
开启xampp中的mysql及apache服务。
我们在<span class="text-danger">app\index\controller</span>中写入以下语句。
~~~
<?php
namespace app\index\controller; //命名空间,也说明了文件所在的文件夹
use think\Db; // 引用数据库操作类
// Index既是类名,也是文件名,说明这个文件的名字为Index.php。
class Index
{
public function index()
{
var_dump(Db::name('teacher')->find()); //获取数据表中第一条数据
}
}
~~~
<hr />
以后,我们将以命名空间的形式,来直接说明文件的位置。
比如:app\index\controller分别代表:
app = <span class="text-danger">app</span>lication<br />
index = <span class="text-danger">index</span><br />
controller = <span class="text-danger">controller</span><br />
所以以上的命名空间 **“app\index\controller”**代表**“application\index\controller”**文件夹。<br />
结合命名空间(app\index\controller)及类名(Index),我们对应找到的文件如下:
![](https://box.kancloud.cn/2016-06-13_575e5beb62bdd.png)
<hr />
往往,我们很难一次性能将代码全部书写正确,哪怕我们照着代码进行简单的打字复制。
如果出现下图中这样的报错,证明你基本的语法可能引用错了,请仔细核对,查找自己书写的代码与示例代码中不一致的地方。
![](https://box.kancloud.cn/13b1916b8a581c271f2d6675ad13c134_592x261.png)
如上图,错误提示中指明出错的文件是index.php。
如果出现了如下图的报错信息,说明是数据库配置信息出错了。此时,就需要检查数据库是否开启或配置信息是否正确。
![](https://box.kancloud.cn/504701614a68f544737cbe15df0edd63_796x332.png)
正确的访问界面如下图所示:
![](https://box.kancloud.cn/8b3482ebc2d1ab2eef75ba96b9ab1c51_489x232.png)
~~~
git checkout -f step3.2.2
~~~
执行```git checkout -f step3.2.2```命令后,你本机d:/xampp/htdocs/thinkphp5guide中的代码,已经和我们本节教程一致了。没错,这就是GIT的魅力。
截图如下:
![](https://box.kancloud.cn/7a8d37eb52f88a53cbc04b5746e9e933_994x274.png)
数据库配置信息如下:
![](https://box.kancloud.cn/15a2a6ae312f786282ac2ead0223cb6d_913x542.png)
- 序言
- 第一章 准备知识
- 第一节:XAMPP
- 第二节:NAVICAT
- 第三节:GIT
- 第二章 HelloWorld
- 第一节:下载THINPHP5.0
- 第二节:启动xampp
- 第三节:hello thinkphp
- 第四节:Hello world
- 第五节:MCA
- 第六节:单引号与双引号
- 第三章 教师管理
- 第一节:新建数据库
- 第二节:CURD之R 读数据
- 3.2.1 时序图
- 3.2.2 连接数据库
- 3.2.3 直接读取数据
- 3.2.4 间接读取数据
- 3.2.5 使用V层显示数据
- 3.2.6 引入bootstrap
- 3.2.7 加入bootstrap样式
- 第三节:CURD之 C 增加数据
- 3.3.1 插入数据
- 3.3.2 表单传值
- 3.3.3 存储表单数据
- 3.3.4 自动时间戳
- 3.3.5 增加验证
- 第四节:CURD之 D 删除数据
- 3.4.1 什么是关键字
- 3.4.2 删除数据
- 3.4.3 定制删除链接
- 3.4.4 完善删除
- 第五节:CURD之 U 更新数据
- 3.5.1 读取数据
- 3.5.2 展示数据
- 3.5.3 修改数据
- 3.5.4 传递数据
- 3.5.5 接收数据
- 3.5.6 更新数据 方法一
- 3.5.7 更新数据 方法二
- 第六节:衔接各个action & 重构代码
- 3.6.1 index action
- 3.6.2 add action
- 3.6.3 insert action
- 3.6.4 delete action
- 3.6.5 edit action
- 3.6.6 update action
- 第七节:分页
- 3.7.1 调用内置分页
- 3.7.2 select与paginate(选学)
- 3.7.3 分页原理(选学)
- 3.7.4 调用page(选学)
- 第八节:模糊查询
- 3.8.1 增加查询
- 3.8.2 完善查询
- 第四章 登录与注销
- 第一节:cookie 与 session
- 第二节:静态方法
- 第三节:规划URL跳转
- 第四节:登录
- 4.4.1 登录流程
- 4.4.2 index action
- 4.4.3 login action
- 4.4.4 引入M层
- 4.4.5 异常Exception
- 第五节:注销
- 第六节:验证
- 4.6.1 action增加验证
- 4.6.2 使用构造函数验证
- 4.6.3 使用继承验证
- 第五章 E-R图与数据字典
- 第一节:第一张E-R图
- 第二节:实体间的关系
- 第三节:开发规范
- 第六章 班级管理
- 第一节:建立数据表
- 第二节:数据列表index
- 第三节:增加数据add
- 第四节:编辑数据edit
- 第五节:删除数据delete
- 第七章 学生管理
- 第一节:建立数据表
- 第二节:数据列表
- 7.2.1 显示性别
- 7.2.2 显示创建时间
- 7.2.3 显示班级名称
- 7.2.4 显示辅导员姓名
- 第三节:编辑数据
- 第四节:魔法函数
- 第五节:源码分析
- 第八章 课程管理
- 第一节:建立数据表
- 第二节:新增课程
- 第三节:编辑课程
- 8.3.1 edit
- 8.3.2 update
- 第九章 代码重构
- 第一节:add 与 edit
- 第二节:insert 与 update
- 第三节:模板继承
- 9.3.1 index.html
- 9.3.2 edit.html
- 9.3.3 小结
- 第十章 UML图
- 第一节:E-R图回顾
- 第二节:UML图
- 第十一章 菜单与路由
- 第一节:添加菜单
- 第二节:虚拟主机
- 第三节:定制路由
- 第十二章 开发调试
- 第一节:开启trace
- 第二节:查看日志
- 第十三章:总结