我正在尝试通过表格迭代来自2个数组的信息。两个表都有一个相同的“构建”行,对于表的一个单元格,我想比较这些行的内容。我的代码如下:
<?php
$sql = "SELECT b.building, a.building FROM cms_TABLE_B b, cms_TABLE_A a WHERE a.building = b.building";
$result = $database->query($sql);
$availabilities[] = $database->fetch_array($result);
?>
<?php foreach ($TABLE_ARecords as $record): ?>
<div class="table-row">
<div class="property"><span><?php echo htmlencode($record['address']) ?></span></div>
<div class="availabilities"><span><?php if(in_array($record['building'], $availabilities)) { echo "success"; } else { echo "fail"; } ?></span></div>
</div>
<?php endforeach ?>
我正在尝试从TABLE_A中获取“构建”的内容,并检查它是否与TABLE_B中的“building”内容相匹配。最终,如果内容匹配,我想计算他们所拥有的匹配数,并将其显示在表格单元格中。我不认为我会以正确的方式进行此操作,因为$ availablebilities数组甚至没有正确的信息 - 但使用while会导致表重复。我不想显示TABLE_B中的任何信息,我只想对它引用TABLE_A并显示计数。
答案 0 :(得分:2)
您的代码可能会有点误导。您正在$availabilities[]
中存储查询结果,但您正在循环浏览$TABLE_ARecords
只要您的查询正确,您就可以使用count($availabilities)
说到您的查询,您的表格正在请求建筑物的'address'
。我相信您正在寻找的查询将类似于
$sql = "SELECT a.building, a.address FROM cms_TABLE_A a
LEFT JOIN cms_TABLE_B b ON a.building = b.building";
答案 1 :(得分:1)
看起来您似乎正在尝试打印更多的“匹配数”。
你在哪里获得$ record ['address']?在查询中没有您获取地址信息。
在这里猜测。我愿意:
$query = "SELECT a.building,a.address,a.otherInfo FROM cms_TABLE_B b, cms_TABLE_A a WHERE a.building = b.building";
$result = $database->prepare($query);
$result->execute();
while($row = $result->fetch())
{
echo "<tr><td>" . $row['building'] . "</td><td>" . $row['address'] . "</td><td>" . $row['otherInfo'] . "</td></tr>";
//or whatever table format/div format you want to use.
}