检索聊天消息

时间:2015-02-04 18:38:15

标签: php sql foreach

我试图从我的phpmyadmin数据库中获取聊天消息(其中有2条消息),但我的查询有问题。这是:

$query = "SELECT * FROM chat WHERE (user_from='". $_SESSION['username'] ."' AND user_to='". $result['username'] ."') OR (user_from='". $result['username'] ."' AND user_to='". $_SESSION['username'] ."') ORDER BY id DESC";
$chatlog = $db->query($query);
$message = $chatlog->fetch_array(MYSQLI_ASSOC);

运行此代码时:echo $message['message']; 只有第一条消息出现,我也尝试使用foreach,但这似乎也没有用。

2 个答案:

答案 0 :(得分:2)

你只收到一条消息,因为那是fetch_array所做的 - 它将下一条记录作为一个数组。

如果您想获得多条记录,则需要循环遍历行并为每行调用fetch_array

while ($message = $chatlog->fetch_array(MYSQLI_ASSOC)) {
   $messages[] = $message;
}

此外,使用参数化查询或prepared statements来保存自己的SQL注入

答案 1 :(得分:0)

非常感谢大家,现在使用fetch_all这是我的代码:

$query = "SELECT * FROM chat WHERE (user_from='". $_SESSION['username'] ."' AND user_to='". $result['username'] ."') OR (user_from='". $result['username'] ."' AND user_to='". $_SESSION['username'] ."') ORDER BY id DESC";
$chatlog = $db->query($query);
$message = $chatlog->fetch_all(MYSQLI_ASSOC);
foreach ($message as $chat) {
echo $chat['message'];
}