提取最近两个小时的消息?

Pull messages from the last two hours?

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

代码:

    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>";
        }
    }
?>

你应该这样使用 SQL date_sub:

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

一种方法...

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