thinkphp6:訪問mysql數據庫(thinkphp 6.0.9/php 8.0.14)


一,在.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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM