Php 如何仅自动从MySql获取新行?
我正在为我的用户提供消息服务。我使用AJAX发送消息而不刷新消息。我希望自动从数据库中获取新行(如果当前用户或另一方用户输入任何消息),而不刷新旧消息Php 如何仅自动从MySql获取新行?,php,jquery,mysql,ajax,chat,Php,Jquery,Mysql,Ajax,Chat,我正在为我的用户提供消息服务。我使用AJAX发送消息而不刷新消息。我希望自动从数据库中获取新行(如果当前用户或另一方用户输入任何消息),而不刷新旧消息 <div id="readmsg"> #The messages is to be read here.... </div> <textarea placeholder="Write your message.." id="msg"></te
<div id="readmsg">
#The messages is to be read here....
</div>
<textarea placeholder="Write your message.." id="msg"></textarea>
<input type="submit" value="Send" id="sendmsg">
<?php $user1 = 1; $user2 = 2; ?>
<script type="text/javascript">
$(document).ready(function(){
$("#sendmsg").on("click",function(e){
e.preventDefault();
var usera = <?php echo $user1.";";?>
var userb = <?php echo $user2.";";?>
var msg = $("#msg").val();
$.ajax({
url : "sendmessageprocess.php",
type : "POST",
data : {message:msg, user1:usera, user2:userb},
success : function(data){
document.getElementById("msg").value="";
$("#msg").val("");
}
});
})
});
</script>
#这些信息将在这里阅读。。。。
$(文档).ready(函数(){
$(“#sendmsg”)。在(“单击”上,函数(e){
e、 预防默认值();
var usera=
var userb=
var msg=$(“#msg”).val();
$.ajax({
url:“sendmessageprocess.php”,
类型:“POST”,
数据:{message:msg,user1:usera,user2:userb},
成功:功能(数据){
document.getElementById(“msg”).value=“”;
$(“#msg”).val(“”);
}
});
})
});
正如我在评论中看到的,朋友们只会让你的问题复杂化,而不是你的主要问题
作为一个聊天室的创建者,我将认真地向您推荐使用另一种技术,而不是ajax
但如果有必要使用ajax,解决问题的最佳方法是:
在查询中获取新消息后,将最后一行id放入会话或cookie中的某个索引中,例如:
$_SESSION['last_msg_id'] = $row['id'];
在另一种情况下,请求得到的消息是,它们的id大于您的上一个\u msg\u id
$query = 'SELECT * FROM `messages` WHERE `id` > "' . $_SESSION['last_msg_id'] . '"';
并且,对于没有会话索引的新客户机,例如,获取最后10条消息,并按指定方式创建会话索引。例如:
if(isset($_SESSION['last_msg_id'])){
$query = 'SELECT * FROM `messages` WHERE `id` > "' . $_SESSION['last_msg_id'] . '"';
}else{
$query = 'SELECT * FROM `messages` ORDER BY `id` ASC LIMIT 10';
}
// your query process
$rows = {your rows};
foreach($rows as $row){
$_SESSION['last_msg_id'] = $row['id'];
}
// or
$rows = {your rows};
$last_row = end($row);
$_SESSION['last_msg_id'] = $last_row['id']
当前如何检查代码中的新消息?(注意:当使用WebSocket或AJAX和服务器发送事件的组合来实现实时聊天应用程序时,效率会更高。仅使用AJAX的解决方案可以工作,但效率会更低,因为客户端必须定期轮询服务器以获取新消息,而不知道是否有任何新消息可用。Wh我的意思是,你应该考虑是否想用不同的方式来实现这个特性。