PHP与ThinkPHP连接数据库示例

【图书介绍】《ThinkPHP 8高效构建Web应用》-CSDN博客

《2025新书 ThinkPHP 8高效构建Web应用 编程与应用开发丛书 夏磊 清华大学出版社教材书籍 9787302678236 ThinkPHP 8高效构建Web应用》【摘要 书评 试读】- 京东图书

使用VS Code开发ThinkPHP项目-CSDN博客

编程与应用开发_夏天又到了的博客-CSDN博客

7.1 PHP连接数据库

PHP支持的数据库类型非常广泛,包括MySQL、Oracle、SQL Server、MongoDB、Redis、PostgreSQL、SQLite等。以连接MySQL数据库为例,通常使用mysqli扩展或PDO(PHP Data Objects)扩展,这两个扩展需要在PHP安装目录下的php.ini中进行配置。首先打开php.ini,找到";extension=php_mysqli"和";extension=pdo_mysql"语句,去掉这两条语句前的分号";",再保存一下php.ini文件,重新启动开发服务器即可启用mysqli和PDO。

下面是PHP通过mysqli扩展连接数据库的示例,需要读者事先安装好MySQL 8数据库:

复制代码
//public/testmysqli.php
<?php
//连接数据库,world是MySQL自带的示例数据库,在安装MySQL时需要选择安装
$db=mysqli_connect('localhost','root','1111','world') or die("无法连接服务器"); 
print("成功连接服务器<br>");

$sq = "select * from city limit 10";
$result = mysqli_query($db,$sq);

while($row = mysqli_fetch_row($result)){
    print($row[1]."<br>");
}
mysqli_close($db);

运行服务器,在浏览器中访问http://localhost:8000/testmysqli.php,看到正确的输出结果,即表示mysqli扩展正常工作。再来看一个PHP通过PDO扩展连接数据库的示例:

复制代码
//public/testpdo.php
<?php
try {
    //连接数据库,world是MySQL自带的示例数据库,在安装MySQL时需要选择安装
    $dbconnect = new PDO('mysql:host=localhost;dbname=world','root','1111');
} catch (PDOException $exception) {
    echo "Connection error message: " . $exception->getMessage();
}
$sqlquery = "select * from city limit 10";
$result = $dbconnect->query($sqlquery);
foreach ($result as $row){
    $name = $row['Name'];
    $countrycode = $row['CountryCode'];
    echo "City: $name  . $CountryCode. <br/>";
}

运行服务器,在浏览器中访问http://localhost:8000/testpdo.php,看到正确的输出结果,即表示PDO扩展已经正常工作了。

7.2 ThinkPHP连接数据库

ThinkPHP 8的数据库连接的配置跟之前的版本区别不大,在config/database.php中配置好连接信息,然后就可以编写控制器并执行查询了。

ThinkPHP 8支持多个数据库连接,默认情况下会使用默认的数据库进行连接,我们也可以通过代码指定想要采用的连接方式,这个功能使用起来非常灵活。

7.2.1 单个数据库连接

下面是一个连接数据库的配置示例:

复制代码
// config/database.php
'default' => env('DB_DRIVER', 'mysql'),
// 数据库连接配置信息
'connections' => [
    'mysql' => [ // 连接标识符
        // 数据库类型
        'type' => env('DB_TYPE', 'mysql'),
        // 服务器地址
        'hostname' => env('DB_HOST', '127.0.0.1'),
        // 数据库名
        'database' => env('DB_NAME', 'test'),
        // 用户名
        'username' => env('DB_USER', 'root'),
        // 密码
        'password' => env('DB_PASS', '111111'),
        // 端口
        'hostport' => env('DB_PORT', '3306'),
        // 数据库连接参数
        'params' => [],
        // 数据库编码默认采用utf8
        'charset' => env('DB_CHARSET', 'utf8'),
        // 数据库表前缀
        'prefix' => env('DB_PREFIX', ''),
    ],
    // 更多的数据库配置信息
]

下面列举一个在控制器中查询数据库版本的示例。

【示例7-1】

新建app/controller/Index.php文件,代码如下:

复制代码
<?php
// 控制器
namespace app\controller;

use think\facade\Db;

class Index
{
    // 获取数据库版本号
    public function index()
    {
        print_r(Db::query('SELECT VERSION()'));
    }
}

运行服务器,在浏览器中访问http://localhost:8000,输出结果如下,笔者的数据库版本是8.3.0,读者的输出有可能与此结果信息不一致,这个是正常的。

复制代码
Array ( [0] => Array ( [VERSION()] => 8.3.0 ) )
相关推荐
m0_720245015 分钟前
1543.统计好三元组(简单)
开发语言·算法
叠层归一研究院1 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
祈禾1 小时前
Redis三大缓存问题与分布式锁
运维·数据库·redis·笔记·分布式·缓存
明朝百晓生2 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
DBA小马哥2 小时前
关系型数据库核心概念手册:SQL、事务与存储引擎的技术脉络
数据库·sql
丫头,冲鸭!!!2 小时前
记账网站3-连数据库
数据库·个人开发
weixin-a153003083162 小时前
python-装饰器
开发语言·python
灯澜忆梦3 小时前
【MySQL12】进阶篇 | SQL优化
数据库·sql·mysql·性能优化
我的xiaodoujiao3 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
叠层归一研究院3 小时前
AGI 系统(五):多主体 AGI 网络 — 分布式符号边界上的时序差同构传播
分布式·php·agi