当前位置: 首页> 最新文章列表> 使用 json_encode() 将 mysqli_result 转为 JSON 格式

使用 json_encode() 将 mysqli_result 转为 JSON 格式

M66 2025-05-28

在 PHP 中,很多时候我们需要从数据库中获取数据并以 JSON 格式返回,比如为前端提供 API 接口。要做到这一点,可以使用 mysqli 扩展执行查询,再用 json_encode() 函数将结果数组编码为 JSON 字符串。

本文将一步步讲解如何实现这一过程。

1. 建立数据库连接

首先,需要使用 mysqli 创建与数据库的连接:

$servername = "localhost";
$username = "db_user";
$password = "db_password";
$database = "db_name";

$conn = new mysqli($servername, $username, $password, $database);

// 检查连接是否成功
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

2. 执行查询

我们以查询一张名为 users 的表为例,获取所有用户数据:

$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);

这里 $result 就是一个 mysqli_result 对象,包含了查询到的结果。

3. 将查询结果转换为数组

由于 json_encode() 无法直接编码 mysqli_result 对象,我们需要先把它转换成一个数组:

$data = array();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
}

这里我们使用 fetch_assoc() 方法把每一行数据作为关联数组取出,并添加到 $data 数组中。

4. 使用 json_encode() 转换为 JSON

现在我们有了包含所有查询结果的数组 $data,可以用 json_encode() 转换成 JSON 格式:

$jsonResult = json_encode($data);

// 输出 JSON 数据
header('Content-Type: application/json');
echo $jsonResult;

这里我们还设置了 Content-Type 头为 application/json,告诉客户端返回的是 JSON 格式。

5. 完整示例代码

综合以上步骤,完整的代码如下:

<?php
$servername = "localhost";
$username = "db_user";
$password = "db_password";
$database = "db_name";

$conn = new mysqli($servername, $username, $password, $database);

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

$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);

$data = array();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $data[] = $row;
    }
}

$conn->close();

header('Content-Type: application/json');
echo json_encode($data);
?>

小提示

  • 确保数据库连接信息(如用户名、密码、数据库名)正确。

  • 在实际项目中,为了安全和性能,建议使用预处理语句(prepared statements)代替直接拼接 SQL。

  • 如果要测试接口,可以用浏览器访问,例如:
    https://m66.net/api/get_users.php

这样就可以在浏览器或前端代码中直接获取 JSON 格式的用户数据了。