我在php中有一个查询(mysql),当编码为json时只返回查询的最后一个结果但是我确信查询返回了多个结果:
$counter=0;
$reply=array();
$result = mysqli_query($conn,$stringQuery);;
if ($result->num_rows > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$reply["json"]=$row;
$counter++;
}
echo json_encode($reply);
} else {
echo json_encode("0 results");
}
$conn->close();
当我在javascript中对结果进行字符串化时,它只返回表的最后一个条目,或单个结果:
$.ajax({
type: 'POST',
url: 'SearchQuery.php',
data: {
'json': cond
},
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
dataType: 'json',
success: function(response) {
alert(JSON.stringify(response["json"]));
}
});
答案 0 :(得分:3)
试试这个:
while ($row = mysqli_fetch_assoc($result)) {
$reply[] = $row;
// ^^^^^^^^^^^^^
$counter++;
}
echo json_encode($reply);
答案 1 :(得分:1)
尝试使用fetch_array()
更改fetch_assoc()while($row=$result->fetch_array()){
$reply[] = $row;
$counter++;
}
echo json_encode($reply);
或尝试:
while($row=$result->fetch_array()){
$items.=<<<EOD
{
"r": "{$row['yourfield']}",
},
EOD;
$counter++;
}
header('Content-type: application/json');
?>
{
"response": [
<?php echo $item;?>
]
}
答案 2 :(得分:1)
下面
$reply["json"]=$row;
在此行中,while循环中的最后一个获取行会覆盖现有结果,因此它仅显示最后一行。
你可以尝试
$reply["json"][]=$row;
所以在成功函数的ajax
alert(JSON.stringify(response["json"]));
您可以通过密钥名称“json”访问数据。