これを理解する助けが必要です。PHP/MYSQL SQLの選択
My機能:
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を持つ行は、(公共の行は文句を言わないので、これらのメッセージは、常に滞在する必要が削除されます)歴史
へ
挿入メッセージを削除されます= 1
問題は、私はいけない複数の行が同じCID(すべてのユーザー用とpulbic = 1永久) とchatsessionであるです公衆= 1
編集有しているIDとchatsessionがある場合は、メッセージを削除しないでする方法を知っている:それはちょうどあなたのセットアップを理解しようと
非有効のチャットIDを持つ総チャットに数を追加し、非有効のチャットが総チャットに等しい場合、メッセージは歴史に行くことによってそれを解決しました。 – MakuraYami