我有一个返回多行的SQL查询,我有:
$data = array(
"nom" => $row['nom'] ,
"prix" => $row['rapport'],
"average" => "$moyenne_ge"
);
这是完美的,但只有当我的查询返回一行时才会这样。
我试过了:
$data = array();
$data[$row['nom']]["nom"] = $row['nom'] ;
...
$data[$row['nom']]['average'] = "$moyenne_ge";
为了拥有:
$data[brand1][nom] = brand1
$data[brand1][average] = 150$
$data[brand2][nom] = brand2
$data[brand2][average] = 20$
...
但当我这样做时:json_encode($data)
我只有最新的JSON对象而不是我请求中的所有JSON对象,好像我的数组只有一个品牌而不是10个。
我想我在某个地方做了些蠢事。 谢谢你的帮助
答案 0 :(得分:2)
我猜你的行:
$data = array();
在循环的每次迭代中初始化数组。您不会累积多行数据。
答案 1 :(得分:1)
我想这样的事情对你有用:
$resource = mysql_query("YOUR QUERY");
$results = array()
while($result = mysql_fetch_assoc($resource)) {
$results[$result['brand']] = array(
'nom' => $result['nom'],
'prix' => $result['rapport'],
'average' => $moyenne_ge
);
)
$results
现在包含brand
索引的查询中的所有行。如果这不是您想要的,请在评论中提问。
答案 2 :(得分:1)
如果我正确地读你,你应该做这样的事情:
$data[] = array(
"nom" => $row['nom'] ,
"prix" => $row['rapport'],
"average" => "$moyenne_ge"
);
(注意[]
)
这应该将每个数组附加到$ data而不是覆盖内容。