devo fare un query delete su più tabelle per cancellare gli utenti che hanno eseguito la procedura di registrazione senza confermarla cliccando sul link presente nella mail che invio
le tabelle in oggetto sono 4
codice:
CREATE TABLE IF NOT EXISTS `users` (
`id_user` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(31) NOT NULL,
`passwd` varchar(31) NOT NULL,
`email` varchar(150) NOT NULL,
`registration` int(1) NOT NULL DEFAULT '0',
`newsletters` int(1) NOT NULL DEFAULT '0',
`data_reg` int(10) DEFAULT NULL,
`data_access` int(10) DEFAULT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `users_newsletters` (
`id_newsletters` int(11) NOT NULL AUTO_INCREMENT,
`id_rel_user` int(11) NOT NULL,
`code_newsletters` varchar(50) NOT NULL,
PRIMARY KEY (`id_newsletters`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
CREATE TABLE IF NOT EXISTS `users_profili` (
`id_profilo` int(11) NOT NULL AUTO_INCREMENT,
`id_rel_user` int(11) NOT NULL,
`nome` varchar(50) DEFAULT NULL,
...etc etc
PRIMARY KEY (`id_profilo`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
CREATE TABLE IF NOT EXISTS `users_validate_reg` (
`id_reg` int(11) NOT NULL AUTO_INCREMENT,
`id_rel_user` int(11) NOT NULL,
`code_confirm_reg` varchar(50) NOT NULL,
PRIMARY KEY (`id_reg`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
in sostanza eseguo la seguente funzioni e ottenendo un array con gli id degli utenti non confermati:
Codice PHP:
function clear_confirm_reg()
{
$ora = time();
$ventiquattro_ore = 24*60*60;
$timeout = $ora-$ventiquattro_ore;
$qqq = "SELECT id_user FROM users WHERE registration='0' AND data_reg<='".$timeout."'";
$rrr = mysql_query($qqq) or die(mysql_error());
if(mysql_num_rows($rrr)>=1)
{
$array_id_delete = array();
while($row = mysql_fetch_row($rrr))
{
$array_id_delete[] = $row[0];
}
/*cancellare dalla tabella users*/
/*cencellare dalla tabella profili*/
/*cancellare dalla tabella di conferma registrazione*/
/*cancellare newsletters*/
$qqq_delete ="DELETE ..."; //etc etc
}
}
vorrei evitare di fare 4 query:
Codice PHP:
$query_user = "DELETE users WHERE id_user IN ('".implode("', '", $array_id_delete)."')";
$query_profili = "DELETE users_profili WHERE id_rel_user IN ('".implode("', '", $array_id_delete)."')";
$query_newsletters = "DELETE users_newsletters WHERE id_rel_user IN ('".implode("', '", $array_id_delete)."')";
$query_conferma_reg = "DELETE users_validate_reg WHERE id_rel_user IN ('".implode("', '", $array_id_delete)."')";
PS: Foreign Key non posso usarlo!!