當前位置: 首頁> 最新文章列表> 用fetch_all() 獲取多表連接查詢的結果

用fetch_all() 獲取多表連接查詢的結果

M66 2025-06-15

在PHP中,處理數據庫查詢是日常開發中非常常見的任務。當我們需要從多個表中獲取數據時,通常會使用多表連接(JOIN)查詢。執行完查詢後,如何方便地獲取查詢結果成為關鍵。本文將介紹如何使用fetch_all()方法來獲取多表連接查詢的結果,並結合示例代碼進行說明。

一、多表連接查詢簡介

多表連接查詢可以將多個表中的數據關聯起來,根據特定條件返回結果。例如,有兩個表usersorders ,我們想查詢所有用戶及其對應的訂單信息,這時就可以用JOIN

 SELECT users.id, users.name, orders.order_id, orders.amount 
FROM users 
JOIN orders ON users.id = orders.user_id;

二、PHP中使用mysqli執行多表連接查詢

PHP提供了多種方式操作MySQL數據庫,這裡我們使用mysqli擴展,並用fetch_all()方法獲取所有結果。

1. 建立數據庫連接

<?php
$mysqli = new mysqli("m66.net", "username", "password", "database");

if ($mysqli->connect_error) {
    die("連接失敗: " . $mysqli->connect_error);
}
?>

2. 執行多表連接查詢

<?php
$sql = "SELECT users.id, users.name, orders.order_id, orders.amount 
        FROM users 
        JOIN orders ON users.id = orders.user_id";

$result = $mysqli->query($sql);

if (!$result) {
    die("查詢失敗: " . $mysqli->error);
}
?>

3. 使用fetch_all()獲取結果

fetch_all()會一次性獲取結果集的所有行,返回一個二維數組。它的默認返回類型是MYSQLI_NUM ,即索引數組,我們也可以使用MYSQLI_ASSOC獲取關聯數組。

 <?php
$data = $result->fetch_all(MYSQLI_ASSOC);

foreach ($data as $row) {
    echo "用戶ID: " . $row['id'] . ",姓名: " . $row['name'] . ",訂單ID: " . $row['order_id'] . ",金額: " . $row['amount'] . "<br>";
}
?>

4. 關閉連接

<?php
$mysqli->close();
?>

三、完整示例代碼

<?php
$mysqli = new mysqli("m66.net", "username", "password", "database");

if ($mysqli->connect_error) {
    die("連接失敗: " . $mysqli->connect_error);
}

$sql = "SELECT users.id, users.name, orders.order_id, orders.amount 
        FROM users 
        JOIN orders ON users.id = orders.user_id";

$result = $mysqli->query($sql);

if (!$result) {
    die("查詢失敗: " . $mysqli->error);
}

$data = $result->fetch_all(MYSQLI_ASSOC);

foreach ($data as $row) {
    echo "用戶ID: " . $row['id'] . ",姓名: " . $row['name'] . ",訂單ID: " . $row['order_id'] . ",金額: " . $row['amount'] . "<br>";
}

$mysqli->close();
?>

四、小結

  • 多表連接查詢是獲取關聯數據的有效方法。

  • 使用mysqliquery()執行查詢,使用fetch_all()一次性獲取所有結果,簡化數據處理。

  • 通過設置fetch_all()的參數為MYSQLI_ASSOC ,可以方便地通過字段名訪問數據。

希望本文能幫助你更好地理解並運用fetch_all()來獲取多表連接查詢的結果。