Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示不同数据库表中的多个名称_Php_Sql - Fatal编程技术网

Php 如何显示不同数据库表中的多个名称

Php 如何显示不同数据库表中的多个名称,php,sql,Php,Sql,我试图显示连接到同一个表的名称 有3个不同的数据库表: 桌子 客人 信息 首先,我从表中获取数据以获取表id 然后我从Info表中获取数据,以确定哪些来宾连接到表id,这样我就可以得到他们的id,可以是多个id 最后我通过它的id得到每个客人的名字 我的问题是,我只能得到我期望的最终名称,而不是所有连接到同一个表的名称 最后一个结果需要显示每个表以及连接到该表的每个名称 PHP: HTML: 如果要在数组中获取多个名称,则代码应为: $array[$i]['name'][] = $row3['n

我试图显示连接到同一个表的名称

有3个不同的数据库表:

桌子 客人 信息 首先,我从表中获取数据以获取表id

然后我从Info表中获取数据,以确定哪些来宾连接到表id,这样我就可以得到他们的id,可以是多个id

最后我通过它的id得到每个客人的名字

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

最后一个结果需要显示每个表以及连接到该表的每个名称

PHP:

HTML:


如果要在数组中获取多个名称,则代码应为:

$array[$i]['name'][] = $row3['name'];
或者根据客人ID代码

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

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

除了Rohit Rasela之外的另一个解决方案是使用联接。从长远来看,连接将是一个更好的解决方案,特别是当您开始添加大量数据时,速度非常重要。我已经有一段时间没有使用PHP和MySQL了,我还没有测试过,但我相信它应该可以工作:

MySQL:

SELECT
  guests.name as GuestName,
  table.tid as TableId,
  info.id as InfoId 
FROM table AS table 
JOIN info AS info ON info.tid = table.tid
JOIN guests AS guests ON guests .id = info.[guest_id_column_name]
这将在遍历每个表时为找到的每个匹配返回一行,您将能够遍历并访问每个匹配的GuestName、TableId和InfoId。如果您不关心表ID,可以在选择列表中将其忽略。如果订单重要,您可以按添加订单

HTML循环:

while ($row = $result->fetch_assoc()) {
    <div>Guest name: <php echo $row['GuestName']; ?></div>
    <div>Table Id: <php echo $row['TableId']; ?></div>
    <div>Info Id: <php echo $row['InfoId']; ?></div> 
}

您可以在

上获得有关联接的更多信息。您应该在SQL中查找联接,这可能是一个好的开始。它只获取1个数组文本而不是名称,我们尝试使用以下方法:尝试foreach循环而不是while来显示名称。您需要使用嵌套的foreach来显示名称。请尝试调试每个循环下的值。
SELECT
  guests.name as GuestName,
  table.tid as TableId,
  info.id as InfoId 
FROM table AS table 
JOIN info AS info ON info.tid = table.tid
JOIN guests AS guests ON guests .id = info.[guest_id_column_name]
while ($row = $result->fetch_assoc()) {
    <div>Guest name: <php echo $row['GuestName']; ?></div>
    <div>Table Id: <php echo $row['TableId']; ?></div>
    <div>Info Id: <php echo $row['InfoId']; ?></div> 
}