在PHP 中,很多時候我們需要從數據庫中獲取數據並以JSON 格式返回,比如為前端提供API 接口。要做到這一點,可以使用mysqli擴展執行查詢,再用json_encode()函數將結果數組編碼為JSON 字符串。
本文將一步步講解如何實現這一過程。
首先,需要使用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);
}
我們以查詢一張名為users的表為例,獲取所有用戶數據:
$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);
這裡$result就是一個mysqli_result對象,包含了查詢到的結果。
由於json_encode()無法直接編碼mysqli_result對象,我們需要先把它轉換成一個數組:
$data = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$data[] = $row;
}
}
這裡我們使用fetch_assoc()方法把每一行數據作為關聯數組取出,並添加到$data數組中。
現在我們有了包含所有查詢結果的數組$data ,可以用json_encode()轉換成JSON 格式:
$jsonResult = json_encode($data);
// 輸出 JSON 數據
header('Content-Type: application/json');
echo $jsonResult;
這裡我們還設置了Content-Type頭為application/json ,告訴客戶端返回的是JSON 格式。
綜合以上步驟,完整的代碼如下:
<?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 格式的用戶數據了。