我有3个表,其中一个用来存储项目的一般属性。每个项目可以获得一个或多个图像和一个或多个地址,我将它们存储在单独的表格中。PHP mySQL一对多以数组形式获得结果
tbl_items
id title
1 item1
2 item2
tbl_item_imgs
id title filename item_id
1 img1 kfm.gif 1
2 img2 edff.png 1
3 img3 knkk.jpg 2
4 img4 lkj.png 1
tbl_item_addresses
id address attitude longitude item_id
1 texas 55 54 1
2 NY 34 34 1
3 texas 55 53.5 1
4 LA 84 85 2
现在我想获得一个数组或对象作为这样的结果:
array(2){
[0]=> array(4){
[id]=>"1"
[title]=>"item1"
[imgs] => array(3){
[0]=> array(4){
[id] => "1"
[title] => "img1"
[filename] => "kfm.gif"
[item_id] => "1"
}
[1]=> array(4){
[id] => "2"
[title] => "img2"
[filename] => "edff.png"
[item_id] => "1"
}
[2]=> array(4){
[id] => "4"
[title] => "img"
[filename] => "lkj.png"
[item_id] => "1"
}
}
[addresses] = array(3){
[0]=> array(4){
[id] => "1"
[address] => "texas"
[attitude] => "55"
[longitude] => "54"
}
[1]=> array(4){
[id] => "2"
[address] => "NY"
[attitude] => "34"
[longitude] => "34"
}
[2]=> array(4){
[id] => "3"
[address] => "texas"
[attitude] => "55"
[longitude] => "53.5"
}
}
}
[1]=> array(4){
array(4){
[id]=>"1"
[title]=>"item1"
[imgs] => array(1){
[0]=>array(4){
[id] => "3"
[title] => "img3"
[filename] => "knkk.jpg"
[item_id] => "2"
}
}
[addresses] = array(1){
[0]=>array(4){
[id] => "4"
[address] => "LA"
[attitude] => "84"
[longitude] => "85"
}
}
}
}
}
所以,我的问题是这样的:我可以通过一个SQL请求来做到这一点?我知道,MySQL不会返回数组,所以我必须使用PHP来处理mysql结果来获取它。请帮我找出最好的方法来做到这一点。
一种方式可能是通过一个查询获取项目并对其进行foreach,然后使用单独的sql请求获取每行的地址和imgs,并将它们推送到项目数组中。我不认为这是一个好主意,因为这需要太多的查询,而且会很慢。
我不确定你在问什么:如果你可以用一个SQL查询(如果是这样,查询是什么)提取所有数据,或者你如何从数组中提取数据数据。 – 2014-03-06 13:20:47
我会使用两个连接从数据库中获取数据。然后我会使用一个带有item id的foreach作为父数组的键,我会通过循环将地址数据和img数据推送到数组中。 – 2014-03-06 13:40:28
@MartinE。谨慎给OP一些代码? – 2014-03-06 14:51:23