如果在最近20秒内在sql上添加新数据,如何附加新数据

时间:2015-02-24 11:47:00

标签: php jquery

如果在最近20秒内在sql上添加新数据,我想追加新数据。

所以我在wall.php页面中使用了以下脚本。

现在在我的server.php文件查询中我创建了

$timestamp = date("Y-m-d H:i:s", time() - 20);
$results = mysqli_query($dbh,"SELECT * FROM comments_lite WHERE qazi_id='1012' AND `date` > '".$timestamp."' ORDER BY date DESC LIMIT 1") or die(mysqli_error($dbh));

我也尝试了哪些不起作用:

WHERE qazi_id='1012' AND `date` >= NOW() - INTERVAL 20 SECOND ORDER BY date DESC LIMIT 1

我的sql日期格式为2015-02-25 19:45:28

但我的查询得到相同的数据,如果我一个接一个地使用$timestamp,也超过5分钟。

  

如果帖子发生的时间是20:20:00,我查询的当前时间是   20:20:10,它会显示帖子。但如果我的查询是当前时间   是20:20:30(发布时间超过20秒),它会   没有显示任何东西。

请给我一个解决它的指导"如果在最后20秒内添加到sql上,则附加一次新数据"。

我的完整代码如下:

JS:

    <script type="text/javascript" charset="utf-8">
function addmsg(type, msg){
    $("#messages").append(
        "<div class='msg "+ type +"'>"+ msg +"</div>"
    );
}

function waitForMsg(){

    $.ajax({
        type: "GET",
        url: "/server/server.php",

        async: true, 
        cache: false,
        timeout:50000, 

        success: function(data){ 
            addmsg("new", data); 
            setTimeout(
                waitForMsg, 
                1000 
            );
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            setTimeout(
                waitForMsg, 
                15000); 
        }
    });
};

$(document).ready(function(){
    waitForMsg(); 
});
</script>

Server.php

include("../db.php");
global $dbh;
header('Content-Type: application/json; charset=utf-8');
while (true) {
//fetch data
$timestamp = date("Y-m-d H:i:s", time() - 20);
$results = mysqli_query($dbh,"SELECT * FROM comments_lite WHERE qazi_id='1012' AND `date` > '".$timestamp."' ORDER BY date DESC LIMIT 1") or die(mysqli_error($dbh));
$rows =  mysqli_fetch_assoc($results);
$data = $rows['description'];

//has data
if (!empty($data)) {
    echo json_encode($data);
    flush();
    exit(0);
}
sleep(5);
}

1 个答案:

答案 0 :(得分:0)

尝试这种方式:

$datetime = date('Y-m-d H:i:s', strtotime('-15 second'));
$results = mysqli_query($dbh,"SELECT * FROM comment WHERE qazi_id='1012' AND date >= '$datetime' ORDER BY date DESC LIMIT 1") or die(mysqli_error($dbh));