【问题标题】:How to get last message from every two users conversation如何从每两个用户对话中获取最后一条消息
【发布时间】:2019-12-05 19:28:40
【问题描述】:

我正在创建消息对话脚本,我想从每两个用户对话中获取最后一条消息。我的脚本显示所有 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";
}

?>

【问题讨论】:

  • 什么不符合您的要求?与预期结果相反,您目前得到的结果是什么?你没说。
  • 你想要什么?您只想打印用户的最后一条消息。我说的对吗?
  • 我的脚本显示 from_id 所有消息,但我想获取所有对话最后消息两个用户
  • 你只得到“from_id”的数据,并且你想打印发送者和接收者的数据
  • @MUFAzmi - 查询中准备好的语句唯一改变的是您如何使用用户数据。例如:你写column = ? 而不是column = '$variable'。除此之外,所有 SQL 仍然相同,因此如果您知道用于解决 OP 问题的查询,它仍然非常有效。

标签: php session mysqli


【解决方案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";
}

每次对话的最后一条消息的图片:

【讨论】:

  • 我们在这里讨论一下。您能否尝试解释一下未显示的内容
  • 不太明白这句话:“当我最后发送消息时它没有显示”
  • 您的脚本仅从 id 数据显示
  • 你确定吗?我不这么认为。
  • 可以添加绑定参数吗
猜你喜欢
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多