我正在尝试以json格式从表1中获取所有数据。
$arr = array();
$sql = "SELECT * FROM table1 ORDER BY price DESC";
$statement = $connect->prepare($sql);
$statement->execute();
$result = $statement->fetchAll();
foreach ($result as $val){
$arr['id'] = $val['item'];
$arr['price'] = $val['price'];
}
echo json_encode($arr);
结果:
{"id":"item00125","price":"112.35"}
问题是我只得到一条记录。为什么foreach(){
没有发送所有记录?
答案 0 :(得分:5)
尝试:
foreach ($result as $val){
$arr[] = array(
"id" => $val['item'],
"price" => val['price']
);
}
答案 1 :(得分:2)
那是因为你的数组每次都被覆盖了。
试试这个:
$i = 0;
foreach ($result as $val){
$arr[$i]['id'] = $val['item'];
$arr[$i]['price'] = $val['price'];
$i++;
}
echo json_encode($arr);
答案 2 :(得分:1)
你只得到一个结果,因为你在循环
的每一次迭代时都会覆盖数组键只需将结果集传递给json_encode
而不使用循环
$statement->execute();
$results=$statement->fetchAll(PDO::FETCH_ASSOC);
$json=json_encode($results);
答案 3 :(得分:1)
此处您的结果变量获取所有记录,但问题出在for each循环中,您将每个值放在[' id']和[' price']的位置所以每次循环都将值放在同一个位置,所以意味着替换值,这样你就得到了最后一个值,所以我必须把每个记录放在不同的位置,如下所示:
$i = 0;
foreach ($result as $val)
{
$arr[$i]['id'] = $val['item'];
$arr[$i]['price'] = $val['price'];
$i++;
}
echo json_encode($arr);
我希望它运作良好