下面是我想用来删除消息的代码。我不仅需要删除邮件,还需要更新“pmessages_folders”表中的邮件总数。
比方说,我想用ID 3,4,5删除消息。其中两条消息位于同一个文件夹中:
消息3 - >文件夹1
消息4 - >文件夹2
消息5 - >文件夹2
所以,从文件夹2将被删除2消息,我需要为此文件夹-2设置total_messages,但查询(result2)只更新一次。它认为array_push忽略了相同的值。
有没有办法解决这个问题?
谢谢。
$result = mysql_query("SELECT sender FROM messages
WHERE id IN(". implode(', ', $_POST['msg_id']).")") or die ('Error1');
$memberids = array();
while ($row = mysql_fetch_assoc($result)) {
array_push($memberids, $row['sender']);
}
$result2 = mysql_query("update messages_folders set total_messages=total_messages-1
where sender IN (".implode(",", $memberids).") and recipient='$id'") or die('Error2');
$result3 = mysql_query("DELETE FROM messages
WHERE id IN (". implode(', ', $_POST['msg_id']).")")or die('Error3');第2部分
这是我的变化:
$result = mysql_query("SELECT sender, COUNT(sender) FROM messages
WHERE id IN(". implode(', ', $_POST['msg_id']).") GROUP BY sender") or die ('Error');
while ($row = mysql_fetch_assoc($result)) {
$memberid = $row['sender'];
$number_to_delete = $row['COUNT(sender)'];
$my_array[] = array($memberid,$number_to_delete);
}结果:
Array
(
[0] => Array
(
[0] => 893
[1] => 1
)
[1] => Array
(
[0] => 557
[1] => 3
)
)因此,$ my_array [0]包含文件夹ID,$ my_array [1]包含已删除消息的数量。
应更新文件夹893:total_messages = total_messages-1
和
应更新文件夹557:total_messages = total_messages-3
不知道如何用IMPLODE做到这一点。我需要这样的东西:
$result9 = mysql_query("update messages_folders set total_messages=total_messages-$my_array[1]
where sender $my_array[0] and recipient='$id'") or die('Error');我没有运行这个查询。这只是为了展示我想要达到的目标。