Php 如何从数据库中获取最后5-10条消息?

Php 如何从数据库中获取最后5-10条消息?,php,jquery,ajax,Php,Jquery,Ajax,我正在从数据库中读取数据,但它被一次又一次地打印出来。有一个索引页的get编码 var lastmsgid = 0; function getChat() { $.ajax({ type: "POST", url: "view_msg.php", data: "sid=<?php echo $id; ?>&lastmsgid="+lastmsgid, async: false, datat

我正在从数据库中读取数据,但它被一次又一次地打印出来。有一个索引页的get编码

var lastmsgid = 0;
function getChat() {
    $.ajax({
        type: "POST",
        url: "view_msg.php",
        data: "sid=<?php echo $id; ?>&lastmsgid="+lastmsgid,
        async: false,
        datatype: "json",
        success: function(rows) {
            for (var i in rows) {
                var row = rows[i];
                var uname=row['uname'];
                var msg=row['msg'];
                $('#chatbox').append("<b>"+uname+"</b> : </b>"+msg).append("<hr />");
                lastmsgid=row['id'];
            }
        }
    });
}

您应该检查SQL查询。。您需要在where条件中使用括号,因为您正在使用OR。。我不知道您想要的结果的条件,但可能如下所示:

$sql="SELECT m.`id`,m.`msg`,u.`uname` FROM `message` as m JOIN `userdata` as u ON (m.`senderid`=u.`id`) WHERE  ((m.`rcvrid` = ".$_SESSION['id']." OR m.`rcvrid` =$sid) AND (`senderid` = $sid OR `senderid` =".$_SESSION['id']." ) ) AND m.`id` > $lastmsgid order by m.`id` DESC limit 0,2" ;

limit
with
order by
@tomexsans你读过他的代码吗?这个问题与jQuery
async有很大关系:false
不好,你甚至不需要它。那么,为什么要添加它呢?
mysql\uuz
不推荐使用。在准备好的语句或PDO.setInterval(function(){getChat();},3000)中使用
mysqli
;我用过setinterval,我用过你的查询,现在只打印了2次,所以请再想想,告诉我该怎么做。Nowhere是ajax聊天应用程序的一个很好的例子。。为此,您应该使用ajax长池。。我很高兴能帮助你。
$sql="SELECT m.`id`,m.`msg`,u.`uname` FROM `message` as m JOIN `userdata` as u ON (m.`senderid`=u.`id`) WHERE  ((m.`rcvrid` = ".$_SESSION['id']." OR m.`rcvrid` =$sid) AND (`senderid` = $sid OR `senderid` =".$_SESSION['id']." ) ) AND m.`id` > $lastmsgid order by m.`id` DESC limit 0,2" ;