Ich denke, Sie können Ihre aktuelle Tabellenstruktur für den Nachrichteninhalt beibehalten. Anstatt separate Spalten oder Gelöscht-Flags hinzuzufügen, wäre es besser, eine separate Tabelle für Postfächer zu haben.
Also Ihre aktuelle mbox-Tabelle:
id message sentby sentto created
Dann noch eine Tabelle für user_mailboxes
id user mailbox message_id
Sie müssten insgesamt drei Einfügungen vornehmen, wenn Sie eine Nachricht schreiben, eine in die Nachrichtentabelle und für jeden Benutzer in die Tabelle user_mailboxes.
Ihre mbox-Daten sehen also so aus:
id message sentby sentto created
1 Hi There UserA UserB 2015-01-26
2 Hello Back UserB UserA 2015-01-26
Und user_mailboxes-Daten würden so aussehen:
id user mailbox message_id
1 UserA Out 1
2 UserB In 1
3 UserB Out 2
4 UserA In 2
Dadurch können Sie einzelne Zeilen für die Tabelle user_mailboxes löschen. Dies würde auch zukünftige Add-Ons ermöglichen, indem Sie Nachrichten an mehrere Benutzer gleichzeitig senden (eine neue Zeile für jeden Benutzer) und bei Bedarf mehr als ein Postfach hinzufügen können (Ein, Aus, Papierkorb, Wichtig usw.).
Um die E-Mails eines Benutzers für ein bestimmtes Postfach nachzuschlagen, verwenden Sie einfach einen Join
SELECT * FROM user_mailboxes LEFT JOIN mbox ON mbox.id = user_mailboxes.message_id WHERE user_mailboxes.user = "$user" AND user_mailboxes.mailbox = "Out";
Sie benötigen beim Löschen ein Bereinigungsskript, um sicherzustellen, dass es keine verwaisten Nachrichten gibt, die nicht in der user_mailboxes-Tabelle vorhanden sind.