## 連接數據庫
我們說數據庫,就像一個圖書館,數據庫中的數據就像是圖書館中的圖書。
我們如果想找到圖書館中的一本書,需要獲得如下信息。
#### 圖書館信息:
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),我們對應找到的文件如下:

<hr />
往往,我們很難一次性能將代碼全部書寫正確,哪怕我們照著代碼進行簡單的打字復制。
如果出現下圖中這樣的報錯,證明你基本的語法可能引用錯了,請仔細核對,查找自己書寫的代碼與示例代碼中不一致的地方。

如上圖,錯誤提示中指明出錯的文件是index.php。
如果出現了如下圖的報錯信息,說明是數據庫配置信息出錯了。此時,就需要檢查數據庫是否開啟或配置信息是否正確。

正確的訪問界面如下圖所示:

~~~
git checkout -f step3.2.2
~~~
執行```git checkout -f step3.2.2```命令后,你本機d:/xampp/htdocs/thinkphp5guide中的代碼,已經和我們本節教程一致了。沒錯,這就是GIT的魅力。
截圖如下:

數據庫配置信息如下:

- 序言
- 第一章 準備知識
- 第一節: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
- 第二節:查看日志
- 第十三章:總結