下面是我想用来删除消息的代码。我不仅需要删除消息,还需要更新"pmessages_folders“表中的消息总数。
比方说,我想删除in为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包含文件夹ID,$my_array1包含已删除消息的数量。
文件夹893应更新: total_messages= _messages-1和文件夹557应更新: total_messages=总计_messages-3
不知道如何处理内爆。我需要这样的东西:
$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');我不会运行这个查询。这只是为了展示我想要达到的目标。
发布于 2011-07-05 09:40:48
如果两个人同时尝试删除相同的消息,那么计数就会停止。
最好删除邮件,然后更新总数,使其等于邮件的计数。为了提供示例查询,我需要查看表的结构。
发布于 2011-07-05 09:42:26
不要使用array_push(),而是使用$memberids []= $row['sender'];
这实际上是由php.net:http://php.net/manual/en/function.array-push.php推荐的,因为它是等价的,并且没有函数开销。尽管array_push()不应该关心以前的值。
https://stackoverflow.com/questions/6580535
复制相似问题