8791 sujets

Développement web côté serveur, CMS

Bonjour

Je veux supprimer plusieurs tables, dans la même base, qui ont toutes le même préfixe.

J’ai trouvé ce code dans un forum :

$show = "SHOW TABLEs LIKE '".$prefix."%'"; 
$show_res = mysql_query($show,$connexion1) or die(mysql_error()); 
while($row = mysql_fetch_row($show_res))  	
$sql = "DROP TABLE '".$row[$num]."'"; 	
mysql_query($sql) or die(mysql_error()); 	
$num++; 	}		 

J’y ai ajouté la connexion à la base, qui se fait bien, sur la bonne base.

Comme résultat : Query was empty

Pourtant, quand j’exécute cette requête SHOW TABLE en PhpMyAdmin, j’ai la liste des tables, une quarantaine, avec des noms difficiles.

Est-ce mon while qui ne convient pas ?

Merci par avance de votre aide.

Francois
Modifié par francoisch (26 Jul 2012 - 21:14)
Salut,
Il te manque une accolade pour marquer le début de ta boucle while.

$show = "SHOW TABLEs LIKE '".$prefix."%'"; 
$show_res = mysql_query($show,$connexion1) or die(mysql_error()); 
while($row = mysql_fetch_row($show_res))  	
[#red][b]{[/b][/#]
$sql = "DROP TABLE '".$row[$num]."'"; 	
mysql_query($sql) or die(mysql_error()); 	
$num++;
}	

Modifié par jytest (26 Jul 2012 - 21:55)
À première vue tu n'initialises pas la variable $num utilisée dans la requête DROP TABLE pour sélectionner le nom de la table à supprimer.
Oui, j'étais à la minute en train d'arriver à ça.

Mais je ne trouve pas où initialiser correctement cette variable.

Francois
Zut, j'avais raté cette marche là, j'ai bien $num = 0; juste avant le while.

Mais ma boucle n'est exécutée qu'une seule fois.

Francois

++++++++++++++++++++++++++++++++++++++++

Mon code fonctionne pour une table seulement.

A la prochaine boucle, le nom de la table est vide.

Arrggg.
Modifié par francoisch (27 Jul 2012 - 18:51)