Php 如何从数据库中获取最后5-10条消息?
我正在从数据库中读取数据,但它被一次又一次地打印出来。有一个索引页的get编码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
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
withorder by
@tomexsans你读过他的代码吗?这个问题与jQueryasync有很大关系: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" ;