我从数据库获取数据,但它一次又一次地打印出来。有索引页面的编码。
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;
?>
答案 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" ;