如何从每两个用户对话中获取最后一条消息

How to get last message from every two users conversation

提问人: 提问时间:12/6/2019 最后编辑:Dharman 更新时间:12/7/2019 访问量:93

问:

我正在创建消息对话脚本,我想从每两个用户的对话中获取最后一条消息。MY 脚本显示所有from_id消息。任何人都可以帮助我,我尝试过很多。

我的数据库 pm 表结构

id  from_id    to_id     msg               sent_date
1   2          3         hi how are you?   2019-12-05 04:14:20
2   3          2         fine              2019-12-05 05:15:58
3   2          3         hi                2019-12-05 03:20:34
4   5          2         hi                2019-12-05 08:30:40

这是我的源代码

<?php
require_once "config.php";
if (isset($_SESSION['userid'])) {
    $to_id = $_SESSION['userid'];
}
if ($stmt = $con->prepare("SELECT * from pm where to_id=? or from_id=?  ")) {
    $stmt->bind_param('ss', $to_id, $from_id);
    $stmt->execute();
}
$result = $stmt->get_result();
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        ?>

<?php echo $row['msg']; ?>

<?php
    }
} else {
    echo "NO MESSAGES";
}

?>
PHP 会话 mysqli

评论

1赞 Funk Forty Niner 12/6/2019
什么没有按照你想要的方式工作?与预期的结果相比,您目前得到的结果是什么?你没说。
0赞 mufazmi 12/6/2019
你在这里想要什么?您只想打印用户的最后一条消息。我说得对吗?
0赞 12/6/2019
我的脚本显示from_id所有消息,但我想获取所有对话最后一条消息两个用户
0赞 mufazmi 12/6/2019
您只获得“from_id”的数据,并且要打印发送方和接收方的数据
1赞 M. Eriksson 12/6/2019
@MUFAzmi - 查询中唯一预处理的语句更改是如何使用用户数据。例如:你写而不是类似的东西。除此之外,所有 SQL 仍然相同,因此如果您知道用于解决 OP 问题的查询,它仍然非常有效。column = ?column = '$variable'

答:

1赞 Jonathan Thunberg 12/7/2019 #1

我想出了这个解决方案,对我来说,在SQL查询中完成所有这些工作太难了。这个解决方案真的不是最好的,但我能想到的最好的。

$sessionId = <session id variable>;

if ($stmt = $con->prepare("SELECT * FROM pm WHERE from_id = ? OR to_id = ? ORDER BY sent_date DESC")) {
    $stmt->bind_param('ii', $sessionId, $sessionId);
    $stmt->execute();
}



$tempArray = array();

$result = $stmt->get_result();

if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {

      if (!in_array($row['to_id'].$row['from_id'], $tempArray)) {
        echo "<br>";
        echo $row['from_id']." - " . $row['to_id']." ". $row['msg']. " - " .$row['sent_date'];
      }

      array_push($tempArray, $row['from_id'].$row['to_id']);
      array_push($tempArray, $row['to_id'].$row['from_id']);


    }
} else {
    echo "NO MESSAGES";
}

每次对话中每条消息的图像:

image of every last message from every conversation

评论

0赞 Jonathan Thunberg 12/7/2019
让我们在这里讨论一下。你能试着再解释一下没有显示的内容吗?
0赞 Jonathan Thunberg 12/7/2019
不太明白这句话:“当我最后发送消息时,它没有显示”
0赞 12/7/2019
脚本仅显示 ID 数据
0赞 Jonathan Thunberg 12/7/2019
是否确定?我不这么认为。
0赞 12/7/2019
你能添加绑定参数吗