首页 / PHP 入门教程 / PHP 连接 MySQL

PHP 入门教程

PHP 连接 MySQL

本教程共 65 篇 · 第 48 篇 · 更新于 2026-07-24 · 约 7 分钟阅读

PHPPHP8MySQLmysqli数据库连接utf8mb4

48. PHP 连接 MySQL

本节目标:掌握 mysqli 扩展的用法,能够使用面向对象和过程式两种方式连接 MySQL 数据库。

PHP 提供了多种方式连接 MySQL。本节重点讲解 mysqli(MySQL Improved)扩展,它是现代 PHP 项目的标准选择。


1. 为什么选择 mysqli

扩展状态说明
mysql已移除PHP 5.5 起废弃,PHP 7.0 起移除
mysqli推荐支持面向对象和过程式,功能完善
PDO推荐数据库抽象层,支持多种数据库(详见第 49 章)

mysqli 比旧版 mysql 扩展更安全,支持预处理语句事务


2. 面向对象方式连接

这是推荐的写法,代码更清晰。

<?php
$host = 'localhost';
$username = 'root';
$password = '123456';
$database = 'my_app';

// 创建连接
$mysqli = new mysqli($host, $username, $password, $database);

// 检查连接
if ($mysqli->connect_error) {
    die('连接失败: ' . $mysqli->connect_error);
}

echo '连接成功';

// 设置字符集
$mysqli->set_charset('utf8mb4');

// 关闭连接
$mysqli->close();
Tip

始终设置 utf8mb4 字符集,确保能正确存储中文和 emoji。


3. 过程式方式连接

过程式风格使用函数调用,与旧版 mysql_* 函数类似。

<?php
$host = 'localhost';
$username = 'root';
$password = '123456';
$database = 'my_app';

// 创建连接
$mysqli = mysqli_connect($host, $username, $password, $database);

// 检查连接
if (!$mysqli) {
    die('连接失败: ' . mysqli_connect_error());
}

echo '连接成功';

// 设置字符集
mysqli_set_charset($mysqli, 'utf8mb4');

// 关闭连接
mysqli_close($mysqli);

4. 两种风格对比

操作面向对象过程式
连接new mysqli(...)mysqli_connect(...)
执行查询$mysqli->query(...)mysqli_query($mysqli, ...)
获取错误$mysqli->errormysqli_error($mysqli)
关闭连接$mysqli->close()mysqli_close($mysqli)
获取行数$result->num_rowsmysqli_num_rows($result)
Note

面向对象风格更符合现代 PHP 编程习惯,推荐优先使用。过程式风格在维护老项目时可能遇到。


5. 完整查询示例

<?php
$mysqli = new mysqli('localhost', 'root', '123456', 'my_app');

if ($mysqli->connect_error) {
    die('连接失败: ' . $mysqli->connect_error);
}

$mysqli->set_charset('utf8mb4');

// 执行查询
$result = $mysqli->query("SELECT id, username, email FROM users LIMIT 5");

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "ID: {$row['id']}, 用户: {$row['username']}, 邮箱: {$row['email']}<br>";
    }
} else {
    echo '没有数据';
}

$result->free(); // 释放结果集
$mysqli->close();

6. 常见连接错误

错误信息原因解决
Connection refusedMySQL 服务未启动启动 MySQL 服务
Access denied用户名或密码错误检查凭据
Unknown database数据库不存在先创建数据库
Class mysqli not found未安装 mysqli 扩展在 php.ini 中启用 extension=mysqli

小结

mysqli 扩展是 PHP 连接 MySQL 的基础。面向对象写法更现代,但两种风格的核心概念相同。下一节将介绍功能更强大的 PDO 扩展(第 49 章)。


来源:参考了 runoob「PHP MySQL 连接」、php-the-right-way、PHP 官方文档,改写后所得。