当前位置: 首页> 最新文章列表> 用 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() 来获取多表连接查询的结果。