我有一张动物桌:
id | name
1 cat
2 dog
我有一个品种表:
id | breed | color
1 siamese white
2 tabby mixed
3 golden retriever yellow
我有一只动物来繁殖桌子:
id | animal_id | breed_id
1 1 1
2 1 2
3 2 3
我希望将每只动物及其所有品种/颜色都放入一个阵列中,然后我将其传递给JS。
所以数据看起来应该是这样的:
array('animal' => 'cat', 'details' => array(array('breed' => 'siamese', 'color' => 'white'), array('breed' => 'tabby', 'color' => 'mixed')) 'animal' => 'dog...etc);
我对查询不确定吗?我需要获取所有动物的数据。
答案 0 :(得分:-1)
这应该可以解决问题:
$query = "SELECT a.name, b.breed, b.colour
FROM animals a
LEFT JOIN animaltobreeds ab on a.id = ab.animal_id
LEFT JOIN breeds b on b.id = ab.breed_id";
$results = $mysqli->query($query);
$data = array(); // We'll build our results into here.
if($results->num_rows) {
while($row = $results->fetch_assoc()) {
if( ! isset($data[$row['name']]) $data[$row['name']] = array();
$data[$row['name']][] = array(
'breed' => $row['breed'],
'colour' => $row['colour']
);
}
}
然后,如果您想为Javascript输出它,可以使用json_encode($data)
将其转换为JSON,然后将其导入Javascript。
您可能会注意到我对您所请求的结构略有不同,这个结构将如下所示:
array('cats' => array('breed => 'siamese', 'colour' => 'white'), array('breed' => 'tabby', 'color' => 'mixed'));
我认为它更容易使用,但如果您确实需要它,那么它应该很容易调整。