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

时间:2014-01-20 04:57:58

标签: php jquery ajax

我从数据库获取数据,但它一次又一次地打印出来。有索引页面的编码。

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'];
            }
        }
    });
}

这是我的view_msg.php页面:

<?php
    header('Content-type: application/json');
    require_once('include/util.php');
    $sid = $_POST['sid'];
    $lastmsgid = $_POST['lastmsgid'];
    $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" ;
    $result = mysql_query($sql);
    $data = array();
    while ($row = mysql_fetch_assoc($result)) {
        $data[] = $row;
    }

    if (!empty($data)) {
        echo json_encode($data);
    }

    exit;
?>

1 个答案:

答案 0 :(得分:1)

你应该检查你的SQL查询..你需要在where 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" ;