當前位置: 首頁> 最新文章列表> 使用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 格式的用戶數據了。