我想知道你是怎么做到的:
我制作了一种聊天框,可以通过脚本自动更新它,并从数据库中加载最新的50条聊天消息。
现在我想知道,如何在每24小时后删除邮件,但保留第一条新的50封邮件,然后删除旧邮件。
MYSQLi和PHP可以实现这一点,还是必须使用更好的解决方案?
更新
来自Lund的建议以及我的提供者的快速回复: 我无法用我当前的计划做Cron Jobs或MYSQL Events。 我也没有钱升级它,所以呃......如果有的话 另一种解决方案,谢谢你帮助我解决这个问题。
我有一个名为:chatbox的表 并在其中有这个:
C_ID
chattext
name
date
答案 0 :(得分:0)
答案 1 :(得分:0)
伪代码(实际上没有工作没有一些编辑来适应你的代码,但它的想法) - 我不知道你的数据是如何存储的,或者它的变量名。或者你的表名。或者基本上我需要的任何信息才能实现这一点。
$sql = ("SELECT * FROM ChatLog ORDER BY TimeAdded DESC"); //Order by descending should show the newest ones first.
$index = 1; //set an index to loop through
while($row = mysqli_query($con, $sql) { //use a while loop to go through the table
if($index <= 50) { //for the first 50 records
//do nothing
} else { //for everything after 50 records
$chatId = $row['chatLogID']; //ID or unique value for the actual message.
$sql = ("DELETE FROM ChatLog WHERE chatLogID='$chatId'"); //Delete it from the table
mysqli_query($con, $sql);//Execute query.
}
}
您可以将其设置为每次存储邮件时执行,或者根据服务器的当前时间进行检查以将其每天删除。
更新:此代码应与您的代码一起使用
$sql = ("SELECT * FROM chatbox ORDER BY time DESC"); //Order by descending should show the newest ones first.
$index = 1; //set an index to loop through
while($row = mysqli_query($con, $sql) { //use a while loop to go through the table
if($index <= 50) { //for the first 50 records
//do nothing
} else { //for everything after 50 records
$chatId = $row['C_ID']; //ID or unique value for the actual message.
$sql = ("DELETE FROM chatbox WHERE C_ID='$chatId'"); //Delete it from the table
mysqli_query($con, $sql);//Execute query.
}
}