【发布时间】:2012-03-08 13:07:00
【问题描述】:
需要一些帮助来解决这个问题。
我的功能:
function cleanDatabase()
{
$allowedTime = $this->time - 10;
$query = mysql_query("SELECT * FROM `chatsessions` WHERE `last_active` < ".$allowedTime." AND `public` = 0");
if( mysql_num_rows($query) > 0 ){
while($row = mysql_fetch_array($query)){
//move messages to history for evrey cID
$query2 = mysql_query(" SELECT * FROM `messages`, `chatsessions`
WHERE messages.cID = ".$row['cID']."
AND chatsessions.cID = messages.cID
AND chatsessions.public = 0");
if( mysql_num_rows($query2) > 0 ){
while($row2 = mysql_fetch_array($query2)){
$insert = mysql_query("INSERT INTO `message_history` (`cID`, `mID`, `user_id`, `sender`, `sendtime`, `message`) VALUES
(".$row2['cID'].", ".$row2['mID'].", ".$row2['user_id'].", '".$row2['sender']."', ".$row2['sendtime'].", '".$row2['message']."')");
if($insert)
$delete = mysql_query("DELETE FROM `messages` WHERE `cID` = ".$row2['cID']);
if(!$delete)
return false;
}
}
$query3 = mysql_query("DELETE FROM `chatsessions` WHERE `cID` = ".$row['cID']." AND public = 0");
}
}
}
这个函数
选择不公开的非活动聊天 1
从选定的聊天中获取消息
将消息插入历史记录
如果插入删除旧消息
删除不公开的聊天会话 = 1
需要做什么:
选择不公开的非活动聊天 1
在删除具有该 cID 的最后一行时从 cID 中选择消息(公共行不会被删除,因此这些消息应该始终保留)
将消息插入历史记录
如果插入删除旧消息
删除不公开的聊天会话 = 1
问题是聊天会话中有多个具有相同 cID 的行(每个用户一个,而永久的 pulbic=1 ) 如果有一个具有公共 = 1 的 ID 的聊天会话,我不知道如何不删除消息
编辑:它应该如何工作的第 2 步
【问题讨论】:
-
通过向具有非活动聊天 ID 的聊天总数添加计数来解决此问题,如果非活动聊天等于总聊天,则消息将进入历史记录。