首页 > 解决方案 > 如何显示来自不同数据库表的多个名称

问题描述

我正在尝试显示连接到同一张表的名称。

有 3 个不同的数据库表:

  1. 客人
  2. 信息

首先,我从“表”中获取数据以获取表 ID。

比我从“信息”表中获取数据来确定哪些客人连接到表 id 所以我得到了他们的 id(可以是多个 id)。

最后,我通过 id 获得每位客人的姓名。

我的问题是我只能得到我期望的最终名称,而不是连接到同一张表的所有名称。

最后一个结果需要显示每个表和连接到表的每个名称。

PHP:

$sql_e1 = "SELECT `tid` FROM `table`";
$result_e1 = $con->query($sql_e1);
if ($result_e1->num_rows > 0) {
    $i = 0;
    while($row0 = $result_e1->fetch_assoc()) {
        $table_id = $row0['tid'];
        $array[$i]['table_id'] = $table_id;

        $sql_e2 = "SELECT `id` FROM `info` WHERE `tid`='".$table_id."'";
        $result_e2 = $con->query($sql_e2);
        if ($result_e2->num_rows > 0) {
            while($row2 = $result_e2->fetch_assoc()) {
                $guest_id = $row2['id'];
                $array[$i]['guest_id'] = $guest_id;         

                $sql_e3 = "SELECT `name` FROM `guests` WHERE `id`='".$guest_id."'";
                $result_e3 = $con->query($sql_e3);
                if ($result_e3->num_rows > 0) {
                    while($row3 = $result_e3->fetch_assoc()) {
                        $array[$i]['name'] = $row3['name'];
                    } 
                }
            } 
        }                   

        $i++;
    }
}

$counter = 0;

HTML:

<? 
if (isset($i)) {
while ($counter < $i) {
include 'infodialog.php';                           
?>
<div class="<? echo $array[$counter]['table_id']; ?>">
<p><? echo $array[$counter]['name']; ?></p>
</div>
<? 
$counter++;
} } ?>

标签: phpsql

解决方案


如果您想在数组中获取多个名称,您的代码应该是:

$array[$i]['name'][] = $row3['name'];

或者根据客人ID代码应该是

$array[$i][$guest_id]['name'][] = $row3['name'];

这将获得所有名称,但您必须根据数组更改 HTML 代码。


推荐阅读