Вы не можете сделать это напрямую, благодаря макету таблицы 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
данных.