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 ) )
相关推荐
X1A0RAN1 小时前
python 借助 paramiko 库执行 SSH命令报错:input is not a terminal 解决方式
开发语言·python·ssh
冰清-小魔鱼1 小时前
各类数据存储结构总结
开发语言·数据结构·数据库
深藏bIue1 小时前
MongoDB 4.4.30安装、数据迁移
数据库·mongodb
Mr -老鬼2 小时前
Java VS Rust
java·开发语言·rust
benyuanone2 小时前
MySQL环境项目迁移成国产化达梦环境
数据库·mysql
北凉军2 小时前
java连接达梦数据库,用户名是其他库的名称无法指定库,所有mapper查询的都是以用户名相同的库内的表
java·开发语言·数据库
尽兴-2 小时前
MySQL索引优化:从理论到实战
数据库·mysql·优化·b+树·索引·最左前缀
沛沛老爹2 小时前
Web转AI架构篇 Agent Skills vs MCP:工具箱与标准接口的本质区别
java·开发语言·前端·人工智能·架构·企业开发
avi91112 小时前
Unity 天命6源码- 商业游戏说明分析
开发语言·unity·c#·游戏开发·游戏源码
ZKNOW甄知科技2 小时前
IT自动分派单据:让企业服务流程更智能、更高效的关键技术
大数据·运维·数据库·人工智能·低代码·自动化