PHP:链接两个表以使用MySQL正确显示数据

时间:2014-04-18 21:13:42

标签: php mysql database

我有两个表以不同于我想要的方式连接,我会尽力解释我要搜索的内容,以及到目前为止我自己完成的内容。

我在寻找什么: 首先,我有一个表objects_price和一个表materials。这些表格如下所示:

objects_price

table objects_price

materials

table materials

好的,所以我有一些物品,可以是椅子,桌子或任何你可以成像的家具。所有对象都连接到第三个表,其中包含有关该对象的信息。每个物体都需要某种材料才能制作出来。正如您在objects_price表中看到的那样,id为1的对象需要47个等于1的材料。Oak Log正如您在{{1}中看到的那样materials }表。

id为2的对象需要两种材质,即材质2和3.它需要20 Stone和30 Birch log

为了让一切变得更加清晰,还有一张图片展示了我刚刚解释过的内容:

displaying what I just said above

到目前为止,我有两个查询,其中一个不能达到我想要的效果,特别是因为我使用数组来显示材料和数量,但我的代码所做的是它显示所有的所有对象中的材质,现在看起来像这样:

what it is like now

问题在于此查询及其创建数组的方式:

$query = 'SELECT objects_price.object_id, materials.material_id, materials.name, material_amount
FROM objects_price
LEFT JOIN materials USING(material_id)';
$result = $mysqli->query($query);

$arr = array();
while($row = $result->fetch_assoc()) {
        $arr[$row['name']][] = $row['material_amount'];
}

以及我为对象提供相应材料的方式:

foreach($arr as $name => $objects) {
?>
<p><?php echo $name; ?><i style="float:right;"><?php foreach($objects as $material_amount) { echo $material_amount; } ?></i></p>
<?php
}

我希望我说清楚,请告诉我你是否希望我提供更多代码,更多图片或解释或类似的东西。任何帮助,建议或建议都非常感谢。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

    while($row = $result->fetch_assoc()) {
    $arr[$row['object_id']][$row['name']] = $row['material_amount'];
    }

...

foreach($ arr as $ key){

$material_array = $key;

foreach ($material_array as $k => $v){
echo "<p>$k | $v</p>";
}

它会正确显示材料名称和数量,但没有对象本身的名称。

}