ThinkPHP获取数据库类型和版本的方法

  在开发后台功能时,可能会需要自动获取当前使用的数据库类型和版本的情况,下面就举个简单的例子实现自动获取当前项目使用的是MySQL还是SQLite数据库及使用的相应数据库版本的方法:

// 数据库类型
$default = config('database.default');
$config = config('database.connections.' . $default);
$db_type = strtolower(trim($config['type'] ?? 'mysql'));

$db_name = 'Database';
$db_ver = '未知';

if ($db_type === 'mysql') {
    $db_name = 'MySQL';
    try {
        $res = Db::query('SELECT VERSION() AS v');
        $db_ver = $res[0]['v'] ?? '8.x';
    } catch (\Throwable $e) {
        $db_ver = '8.x';
    }
} elseif ($db_type === 'sqlite') {
    $db_name = 'SQLite';
    try {
        $res = Db::query('SELECT sqlite_version() AS v');
        $db_ver = $res[0]['v'] ?? '3.x';
    } catch (\Throwable $e) {
        $db_ver = '3.x';
    }
}

$db_version = $db_name . ' ' . $db_ver;

View::assign('db_version', $db_version);
return View::fetch();

  前端获取数据:

数据库版本:{$db_version}

本站原创内容,转载请注明来源:https://www.liutonghui.com/300

郑智化26年后再出新专辑,坦言终于可以对得起自己了
上一篇 2024-10-31
救赎
下一篇 2024-11-16

评论列表(0条)

  • 暂无评论

发表评论

captcha

相关推荐

  • PHP 使用 PDO 进行数据库操作

      PHP 7 已经彻底移除了对 MySQL 扩展的支持,推荐使用 PDO 进行数据库操作,PDO(PHP Data Objects)是一种安全且高效的方法,可以连接和操作多种数据库。PDO 提供了一个统一的接口,用于执行 SQL 查询和操作数据库。   准备一张测试表(以 MySQL 为例) CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userna......

    2016-10-03
    13922
  • PHP封装数据库操作Model类示例

      数据库操作是产品开发中最常见的需求,封装一个PHP数据库操作Model类可以减少反复的写大量SQL语句,下面就为大家分享一个数据库操作Model类。 <?php //引入配置文件 include "./config.php"; class Model { public $link;//存储连接对象 public $tableName = "";//存储表名 public $field =......

    2019-06-12
    21024
  • ThinkPHP数据库操作(Db)与模型操作(Model)区别

      Db类数据操作:性能略高一些,语法简单直观,但是不支持自动处理数据,自动验证,关联查询等功能,适合简单数据操作。 use think\facade\Db; // 查询 Db::table('user')->where('id', 1)->find(); // 新增 Db::table('user')->insert([ 'name' => '张三', 'age' => 20 ]); ......

    2019-12-02
    18300
  • Thinkphp6开发Tinymce图片上传接口的方法

      Tinymce是项目开发中常用的编辑器之一,它的功能非常强大,界面简洁,又支持各种各样功能强大的插件,本文介绍一下ThinkPHP6开发Tinymce图片上传接口的方法。 public function uploads(){ $file = request()->file('file'); // 上传到本地服务器 $savename = \think\facade\Filesystem::disk('p......

    2021-03-02
    18610
  • ThinkPHP6开发wangEditor图片上传接口的方法

      wangEditor是一款近几年非常流行的富文本编辑器,它界面简洁,功能非常强大,本文介绍WangEditor图片上传接口的开发,以Thinkphp6为例。   首先看一下wangEditor官方的接口返回要求:   然后开发Thinkphp6的上传功能: public function testup(){ $file = request()->file('file'); $savename = \think......

    2021-03-02
    19020
  • ThinkPHP数据软删除及数据恢复功能

      ThinkPHP的软删除不是真正删除数据库数据,而是通过标记字段(如delete_time)记录删除状态,查询时自动过滤delete_time字段已标记删除的数据,支持数据恢复和真实删除,相当于为项目加了一个回收站功能,以避免数据被误删。   软删除依赖模型操作,不支持原生查询,需要数据表有删除标记字段(默认delete_time,类型:datetime/timestamp,允许null),需要引入ThinkPHP内置的SoftDe......

    2022-01-27
    10700
  • ThinkPHP多入口文件多应用设置方法

      在使用ThinkPHP做项目开发时,为了让架构更清晰科学,提高安全和性能,方便维护,需要将多应用分配到各自对应的不同的入口文件上,而不是整个项目用一个入口文件。   此方法适用于ThinkPHP6/8,这是ThinkPHP默认的单应用结构: ├─app 应用目录 │ ├─controller 控制器目录 │ ├─model 模型目录 │ ├─view 视图目......

    2024-03-31
    8280
  • ThinkPHP路由简单配置

      ThinkPHP拥有丰富的路由配置功能,灵活的配置路由可以更好的优化URL结构,方便维护,下面简单介绍一下ThinkPHP路由配置方法。   ThinkPHP默认路由结构为/入口文件/应用/控制器/方法,因此就产生了这样一长串的URL结构: https://127.0.0.2/index.php/index/index/index   这还仅仅是首页URL,这样的结构显然不利于维护,更不利于SEO,所以需要做路由配置,以多应用为例,......

    2025-04-21
    7490