首页 > 解决方案 > 如何在mysql中从2个不同的表中进行多次查询?

问题描述

如何从 2 个不同的表中查询多个 while?

我的代码现在看起来像这样:

$query = "SELECT * FROM user_group WHERE email = '$email'";
$result = mysqli_query($connection, $query);
$row = mysqli_fetch_assoc($result);
$group = $row['group'];

$sql = "SELECT * FROM matches WHERE group_name1 = '$group' OR group_name2 = '$group'";
$result = $connection->query($sql);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {
//some HTML code
}
  }
?>

它有效,但由于第一个查询(?)我得到'$row ['group'];',因此只显示匹配表中的一行

标签: phpmysql

解决方案


您需要遍历第一个查询的所有结果,然后在循环中执行第二个查询。

但最好将这两个查询合二为一。

$query = "
    SELECT m.col1, m.col2, m.col3, ...
    FROM matches AS m
    JOIN user_group AS g ON g.group IN (m.group_name1, m.group_name2)
    WHERE g.email = ?";
$stmt = $connection->prepare($query);
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->bind_result($col1, $col2, $col3, ...);
while ($stmt->fetch()) {
    // some code that uses the variables $col1, $col2, $col3, ...
}

col1, col2,col3等替换为表中的实际列名。


推荐阅读