## 连接数据库 我们说数据库,就像一个图书馆,数据库中的数据就像是图书馆中的图书。 我们如果想找到图书馆中的一本书,需要获得如下信息。 #### 图书馆信息: 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)