在PHP中,處理數據庫查詢是日常開發中非常常見的任務。當我們需要從多個表中獲取數據時,通常會使用多表連接(JOIN)查詢。執行完查詢後,如何方便地獲取查詢結果成為關鍵。本文將介紹如何使用fetch_all()方法來獲取多表連接查詢的結果,並結合示例代碼進行說明。
多表連接查詢可以將多個表中的數據關聯起來,根據特定條件返回結果。例如,有兩個表users和orders ,我們想查詢所有用戶及其對應的訂單信息,這時就可以用JOIN 。
SELECT users.id, users.name, orders.order_id, orders.amount
FROM users
JOIN orders ON users.id = orders.user_id;
PHP提供了多種方式操作MySQL數據庫,這裡我們使用mysqli擴展,並用fetch_all()方法獲取所有結果。
<?php
$mysqli = new mysqli("m66.net", "username", "password", "database");
if ($mysqli->connect_error) {
die("連接失敗: " . $mysqli->connect_error);
}
?>
<?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);
}
?>
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>";
}
?>
<?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();
?>
多表連接查詢是獲取關聯數據的有效方法。
使用mysqli的query()執行查詢,使用fetch_all()一次性獲取所有結果,簡化數據處理。
通過設置fetch_all()的參數為MYSQLI_ASSOC ,可以方便地通過字段名訪問數據。
希望本文能幫助你更好地理解並運用fetch_all()來獲取多表連接查詢的結果。