我试图从我的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,但这似乎也没有用。
答案 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'];
}