你不能直接這樣做,由於reserved_data
表的表佈局。你爲什麼這樣做?爲什麼你沒有得到deleted_users
表,包含他們的用戶名和電子郵件?這樣,你可以這樣做:
$q1 = "INSERT INTO deleted_users (username, email) SELECT username, email FROM users WHERE lastlogin < (".time()." - ".$sdata['activitylimit']." * 3600)";
$q2 = "DELETE FROM users WHERE lastlogin < (".time()." - ".$sdata['activitylimit']." * 3600)";
如果你不改變表,使用這樣的:你看後者
$toDelete = mysql_query("SELECT username, email FROM users WHERE lastlogin < (".time()." - ".$sdata['activitylimit']." * 3600)");
while($user = mysql_fetch_assoc($toDelete))
{
mysql_query("INSERT INTO reserved_data (`data`, `type`) VALUES ('" . $user['username'] . ", 'username'");
mysql_query("INSERT INTO reserved_data (`data`, `type`) VALUES ('" . $user['email'] . ", 'email'");
}
// Now perform the delete
mysql_query("DELETE FROM users WHERE lastlogin < (".time()." - ".$sdata['activitylimit']." * 3600)");
需要更多的代碼,通常是一個壞主意。你失去了用戶名和它的電子郵件地址之間的關係。
另外,您可能希望使用事務,因爲可能不會將其包含在第一個查詢中,而是包含在第二個查詢中。您然後失去此用戶的數據。
也許你可以通過簡單地將(in)active
列添加到用戶表中來解決所有問題。一個很少要真的delete
數據。
非常感謝。我現在用桌子瞭解問題。我遵循你的建議,並與deleted_users表一起去。現在看起來更符合邏輯。非常感謝! –
不客氣。請注意編輯,您可能想要「停用」用戶,這很容易通過添加指示用戶是否處於活動狀態的列來完成。 – CodeCaster