Bootstrap

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 ) )

;