自上次更新以来从数据库中检索新条目

I have created a webpage which is designed to ping my databse every 5 seconds for new changes but at the moment my method is buggy, sometimes new entries are doubled up and sometimes they don't appear at all, how am I best to go around this.

I've got this Jquery snippet for AJAX requests to the php script which checks the databse. I use javascript to get the time and use a function to change the timezone around.

   $(document).ready(function() {
       var last = new Date().addHours(10).toMysqlFormat();
        function new(){
           var url = 'new.php?l=' + last;
            $('#new').append($('<div>').load(url));
            last = new Date().addHours(10).toMysqlFormat();
            //console.log("Updated:" + last + ".");
        }
        setInterval(function(){new()}, 5000);


    });

I send to that script the last time it was checked for updates.

This PHP script is as follows:

if (isset($_GET["l"])){
    $dmin = $_GET["l"];
    $dmax = date('Y-m-d H:i:s');

       $sql = "SELECT `ID`,`Name`  FROM `foo` WHERE (`datetime` BETWEEN   '".$dmin ."' AND  '".$dmax ."') ";

After I query the sql statement I loop through the results and return it to the javascripts, where in my process can these errors be coming from or is there a better way to do this?

I think that one of the problems is that my PHP time is 1 or 2 seconds different from the javascript time as for a test, I changed my date back 5 seconds and I got a duplicate of everything. I need a way of using the updates so that the page can be loaded for months and not lose track

$sql = "SELECT `ID`,`Name`  FROM `foo` ORDER BY `id` DESC

Use these query to get the latest entries