我对 2 个表之间的关联有疑问:我有
table 1 "flowers": "id", "flower";
table 2 "colors": "id", "color";
table 3 "association_flowers_colors": "id", "id_flower", "id_color";
现在,一朵花可以有多种颜色,现在的问题是父亲的所有信息都在一个数组中。es:如果我得到第一个表中的所有信息并获取它们,我将拥有
array([0](array[id]=>0, [flower]=>rose), [1]array([id]=>1, [flower]=>tulip));
那么如果我从第二张桌子上收集所有信息,我将拥有
array([0]array([id]=>0, [color]=>red)[1]), [1]array([id]=>1, [color]=>white));
现在的问题:我需要得到一个数组
array([0]array([id]=>0, [flower]=>rose, [color]=>red, [color]=>white), [1]array([id]=>1, [flower]=>tulip, [color]=>red, [color]=>white));
有没有一种简单的方法可以通过一个详细的查询来完成,或者我应该使用 while 循环或类似的东西,然后合并我得到的信息?
谢谢
编辑:
function get_flowers(){
include('../actions/db_connection.php');
$result = mysqli_query($db_connection, "select *
from flowers f
left outer join association_flowers_colors a on f.id = a.id_flower
left outer join colors c on c.id = a.id_color");
mysqli_close($db_connection);
$flowers = array();
while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {
$flowers[] = $row;
};
return $flowers;
}
在阅读了 juergen 的回复后,我最终得到了这个,看起来它有效的问题是它为我提供了每种颜色的数组(总共 4 个数组),而不是只给我 2 个包含两种颜色的数组(总共2个数组)。
edit2:好的,我没有找到一种方法来检索 2 个数组(而不是 4 个)中的所有信息,但无论如何我设法以可读的方式打印它们:
while($row = mysqli_fetch_array($flowers)){
if ($flowerID != $row['id_flower']) {
echo "<div class='flowerContainer'>";
echo "<input type='hidden' name='flowerID' value='".$row['id_flower']."'>";
echo "Name: ".$row['flower']."<br />";
}
echo $row['color']."<br />";
if ($flowerID == $row['id_flower']) {
echo "</div>";
echo "<hr>";
}
$flowerID = $row['id_flower'];
}
这样,即使循环重复每个数组的所有信息,它也只会在有新条目时输出信息,并且不会重复任何内容。