php仅从数据库返回1行

php仅从数据库返回1行,php,Php,我有以下php代码(在returndata.php文件中)为用户检索消息: $sql = 'SELECT * FROM usertimes WHERE receiver ="'. $messagesforaccount. '"'; $result = $conn->query($sql); $response = array(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc())

我有以下php代码(在returndata.php文件中)为用户检索消息:

$sql = 'SELECT * FROM usertimes WHERE receiver ="'. $messagesforaccount. '"';

$result = $conn->query($sql);
$response = array();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $response['message'] = $row["message"];
        $response['date'] = $row["date"];
        $response['sender'] = $row["sender"];
        $response['receiver'] = $row["receiver"];
    }
    echo json_encode($response);
} else {
    echo "  0 results";
}
然后javascript如下所示(在网页上显示消息和一些信息,如发件人、日期等):

$.post(
“returndata.php”,
{messagesforaccount:userAccount},
功能(响应){
var sender=response.sender;
var receiver=response.receiver;
var message=response.message;
var date=response.date;
日志('检索的数据:',发送方,接收方,消息,日期);
p=document.createElement('p')
p、 innerHTML=由“+发件人+”在“+日期”发送的消息+”
“+” listmessages.appendChild(p) }“json” );

这只会向页面添加一条消息(数据库中的最后一条)。php应该是什么样的,以便它循环遍历所有结果,并为每个结果添加消息到网页?

您需要以如下数组中的所有结果进行响应:

$sql = 'SELECT `message`, `date`, `sender`, `receiver` FROM `usertimes` WHERE `receiver` ="'. $messagesforaccount. '"';
您应该只请求所需的字段。这提高了性能并减少了开销。稍后,您可以将整行推送到响应

$result = $conn->query($sql);
$response = array();

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $response[] = $row;
    }
    echo json_encode($response);
} else {
    echo "  0 results";
}

你犯了一点小错误。若您想要多个数据的关联数组,那个么您应该有一个二维数组,并且还必须有一个二维数组的索引

  <?php
$sql = 'SELECT * FROM usertimes WHERE receiver ="'. $messagesforaccount. '"';

$result = $conn->query($sql);
$response = array();
$index = 0;
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$response[$index]['message'] = $row["message"];
$response[$index]['date'] = $row["date"];
$response[$index]['sender'] = $row["sender"];
$response[$index]['receiver'] = $row["receiver"];

$index++;//incrementing index variable
}
echo json_encode($response);
} else {
echo "  0 results";
}

?>

作为回报,您可以用这种方式迭代该数组

  for ($i=0;$i<count($response);$i++)

{
    echo $response[$i]['message'] . "<br>" ;
    echo $response[$i]['date'] . "<br>" ;
    echo $response[$i]['sender'] . "<br>" ;
    echo $response[$i]['receiver'] . "<br>" ;

}

for($i=0;$iYou在循环的每次迭代中重写$response,所以是的,您只会得到一行json_encode'd。谢谢,我只是想让javascript现在在javascript中工作,您也可以在通过json转换后使用与我在php中使用的相同的迭代过程
  for ($i=0;$i<count($response);$i++)

{
    echo $response[$i]['message'] . "<br>" ;
    echo $response[$i]['date'] . "<br>" ;
    echo $response[$i]['sender'] . "<br>" ;
    echo $response[$i]['receiver'] . "<br>" ;

}