使用HTML在FOREACH中进行FOREACH

时间:2016-06-06 05:18:02

标签: php html html5 foreach

现在我有了这个页面,我用foreach来填充页面。然后我在其中有foreach来获取另一个包含特定ID行的表。在嵌套的foreach下的任何问题都不会填补。

enter image description here

示例:

<!-- Get The Person. Results in ONE person. -->
<?
$list = $db2->prepare(" SELECT * FROM Table WHERE ID = ? ");
$list->execute(array($id));
$data = $list->fetchAll();
foreach ($data as $row) :?>

<div><?=$row["name"]?></div>

<!-- Get The Colors. Gets as many results as there are for that ID. -->
<?
$list2 = $db2->prepare(" SELECT * FROM AnotherTable WHERE ID = ? ");
$list2->execute(array($id));
$data2 = $list2->fetchAll();
foreach ($data2 as $row2) :?>

<div><?=$row2["color"]?></div>

<?endforeach?>

<!-- Doesn't show up on the page. -->
<div><?=$row["food"]?></div>

<?endforeach?>

2 个答案:

答案 0 :(得分:0)

我认为你在两个表上使用相同的$ id是导致问题的原因。如果它是子表,并且Table_ID是外键,则可能是

" SELECT * FROM AnotherTable WHERE Table_ID = ? "

或者您可以使用加入并执行

"SELECT * FROM Table INNER JOIN AnotherTable ON Table.ID = AnotherTable.Table_ID WHERE ID = ? "

假设Table_ID是你的外键。

答案 1 :(得分:0)

如评论中所述,

您应该在查询中使用 JOIN 来避免两个foreach循环并在单个查询中获得结果。

写下您的查询,

SELECT * FROM Table1 JOIN Table2 USING (ID) WHERE ID = ?;

相同
SELECT * FROM Table1 JOIN Table2 ON Table1.ID = Table2.ID WHERE Table1.ID = ?

注意: - 要区分列名称,您可以在列名称中使用alias

希望它会对你有所帮助: - )