【问题标题】:Pull messages from the last two hours?拉取过去两个小时的消息?
【发布时间】:2016-02-13 16:52:31
【问题描述】:

我做了一个简单的聊天系统。我只想从数据库中提取最后两条我们的消息,而不是完整的数据库。有人可以告诉我如何做到这一点吗?谢谢!

代码:

    if  (isset($_SESSION['id'])) {
        $userId = $_SESSION['id'];
        $username = $_SESSION['username'];
        $userLabel = $_SESSION['nickname'];
    }

    $connect = mysqli_connect("", "", "", "root");
    mysqli_select_db($connect, "root"); 
    $result1 = mysqli_query($connect, "SELECT * FROM chat ORDER by id DESC");

    while ($extract = mysqli_fetch_assoc($result1)) {
        if ($extract['name'] == 'admin1') {
            $color = '#D00003';
        }
        else if ($extract['name'] == 'admin2') {
            $color = '#7E0002';
        }
        else {
            $color = '#FFFFFF';
        }

        if ($extract['name'] == $userLabel) {
            echo "
            <div class='usermessage'>
                <div class='mheader'>
                    <h2 style='color:".$color."'>" . $extract['time'] . "</h2>
                    <h3 style='color:".$color."'>" . $extract['name'] . "</h3>
                </div>
                <p>" . $extract['message'] . "</p>
            </div>";
        }
        else {
            echo "
            <div class='message'>
                <div class='mheader'>
                    <h2 style='color:".$color."'>" . $extract['time'] . "</h2>
                    <h3 style='color:".$color."'>" . $extract['name'] . "</h3>
                </div>
                <p>" . $extract['message'] . "</p>
            </div>";
        }
    }
?>

【问题讨论】:

    标签: php html mysql phpmyadmin chat


    【解决方案1】:

    你应该像这样使用 SQL date_sub

    SELECT *
    FROM `chat`
    WHERE `time` >= DATE_SUB(NOW(), INTERVAL 2 HOUR)
    ORDER by `id` DESC
    

    【讨论】:

    • 只是想发布这个完全相同的,这是正确的答案:)
    • 别忘了添加来源
    • 这给了我“警告:mysqli_fetch_assoc() 期望参数 1 是 mysqli_result,布尔值”我怀疑这是因为 mysqli_fetch_assoc() 期望返回一些东西?有什么解决方法?
    • 请再试一次,更新答案。如果没有帮助,写下你会得到的错误
    【解决方案2】:

    一种方法...

    SELECT * FROM chat 
    where
        DATE_SUB(CURDATE(),INTERVAL 120 MINUTE) <= date_col;
    ORDER by id DESC
    

    查看官方文档了解更多信息http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

    【讨论】:

    • 两个小时是 120 分钟 ;)
    • 这给了我“警告:mysqli_fetch_assoc() 期望参数 1 是 mysqli_result,布尔值”我怀疑这是因为 mysqli_fetch_assoc() 期望返回一些东西?有什么解决方法?
    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2016-11-30
    • 2014-09-17
    相关资源
    最近更新 更多