一,在.env中配置數據庫
[DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = mediabank USERNAME = root PASSWORD = rootpassword HOSTPORT = 3306 CHARSET = utf8 DEBUG = true
說明:劉宏締的架構森林是一個專注架構的博客,
網站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/29/thinkphp6-fang-wen-mysql-shu-ju-ku-thinkphp-6-9-php-8-14/
對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/
或: https://gitee.com/liuhongdi
說明:作者:劉宏締 郵箱: 371125307@qq.com
二,編寫php代碼:
1,配置數據庫
config/database.php
<?php return [ // 默認使用的數據庫連接配置 'default' => env('database.driver', 'mysql'), // 自定義時間查詢規則 'time_query_rule' => [], // 自動寫入時間戳字段 // true為自動識別類型 false關閉 // 字符串則明確指定時間字段類型 支持 int timestamp datetime date 'auto_timestamp' => true, // 時間字段取出后的默認時間格式 'datetime_format' => 'Y-m-d H:i:s', // 時間字段配置 配置格式:create_time,update_time 'datetime_field' => '', // 數據庫連接配置信息 'connections' => [ 'mysql' => [ // 數據庫類型 'type' => env('database.type', 'mysql'), // 服務器地址 'hostname' => env('database.hostname', '127.0.0.1'), // 數據庫名 'database' => env('database.database', ''), // 用戶名 'username' => env('database.username', 'root'), // 密碼 'password' => env('database.password', ''), // 端口 'hostport' => env('database.hostport', '3306'), // 數據庫連接參數 'params' => [], // 數據庫編碼默認采用utf8 'charset' => env('database.charset', 'utf8'), // 數據庫表前綴 'prefix' => env('database.prefix', ''), // 數據庫部署方式:0 集中式(單一服務器),1 分布式(主從服務器) 'deploy' => 0, // 數據庫讀寫是否分離 主從式有效 'rw_separate' => false, // 讀寫分離后 主服務器數量 'master_num' => 1, // 指定從服務器序號 'slave_no' => '', // 是否嚴格檢查字段是否存在 'fields_strict' => true, // 是否需要斷線重連 'break_reconnect' => false, // 監聽SQL 'trigger_sql' => env('app_debug', true), // 開啟字段緩存 'fields_cache' => false, ], // 更多的數據庫配置信息 ], ];
2,創建一個model:
liuhongdi@lhdpc:/data/php/admapi$ php think make:model Article Model:app\model\Article created successfully.
在model中添加代碼:
<?php declare (strict_types = 1); namespace app\model; use think\Model; use think\facade\Db; /** * @mixin \think\Model */ class Article extends Model { //類名與表名不一致時在這里指定數據表名 protected $table = "media"; //查詢一條記錄 public function getOneMediaById($id){ //查詢一條記錄時用find方法 $result = Db::table("media")->where("id",$id)->find(); return $result; } //查詢多條記錄 public function getAllSaleMedia(){ //查詢一條記錄時用find方法 $result = Db::table("media")->where("isSale",1)->select(); return $result; } }
3,在controller中調用:
<?php declare (strict_types = 1); namespace app\controller; use app\BaseController; use app\result\Result; use think\Request; use think\facade\Cache; use app\model\Article as ArticleModel; class Article extends BaseController { //查詢一條media記錄 public function oneMedia() { $id = $this->request->param("id",0,"intval"); if($id == 0){ //return show(config("status.error"), "參數錯誤"); return Result::Error(1,"參數錯誤"); } $article = new ArticleModel(); $row = $article->getOneMediaById($id); if (is_null($row)) { return Result::Error(1,"數據錯誤"); } else { return Result::Success($row); } } //查詢多條media記錄 public function allMedia() { $article = new ArticleModel(); $rows = $article->getAllSaleMedia(); if (sizeof($rows) == 0) { return Result::Error(1,"沒有符合條件的數據"); } else { return Result::Success($rows); } } }
三,測試查詢數據庫的效果
1,能匹配到數據時:
訪問:
http://192.168.219.6:8000/article/onemedia?id=1
返回:

2,數據不存在時:
訪問:
http://192.168.219.6:8000/article/onemedia?id=5
返回:

3,訪問多條數據:
訪問:
http://192.168.219.6:8000/article/allmedia
返回:

四,查看thinkphp和php的版本:
php
root@lhdpc:~# php --version PHP 8.0.14 (cli) (built: Dec 23 2021 11:52:42) ( NTS ) Copyright (c) The PHP Group Zend Engine v4.0.14, Copyright (c) Zend Technologies with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
thinkphp
root@lhdpc:~# cd /data/php/admapi/ root@lhdpc:/data/php/admapi# php think version v6.0.9