Rechercher : dans
Par :

Tester l'existence d'une table

Dernière réponse le 6 avr 2008 à 12:27:22 schlim, le 8 avr 2004 à 09:52:30 
 Signaler ce message aux modérateurs

Bonjour,

Est ce que qqn pourrais me dire la fonction qui permet de tester si une table MySql existe... merci d'avance


schlim

Meilleures réponses pour « tester l'existence d'une table » dans :
MySQL - Chargement d'un fichier texte dans une table VoirPour charger une fichier texte défini comme suit : $ tail /home/user1/test.txt 'nom1',1,9 'nom2',2,3 'nom3',3,54 'nom4',4,2 'nom5',5,9 Dans une table définie comme suit : CREATE TABLE chargertest ( ...
Tableaux HTML VoirUtilisation de tableaux Il est souvent utile de présenter des informations mieux structurées qu'avec des listes. Les tableaux permettent de les afficher en lignes et en colonnes. Les tableaux sont définis comme étant des suites de lignes. Un...
SQL - Modification de table VoirModification de table Il est possible de supprimer une table grâce à la clause DROP, il existe aussi des commandes moins extrêmes permettant L'ajout de colonnes La modification de colonnes La suppression de colonnes Enfin, il est possible...
Javascript - Les tableaux VoirIntroduction à la notion de tableau Les variables de Javascript ne permettent de stocker qu'une seule donnée à la fois. Or, étant donné qu'il est souvent utile de manipuler de nombreuses données, le concept de variable se révéle parfois...

1

ludvo, le 8 avr 2004 à 10:06:11

Hello

Je ne sais pas s'il y a un fonction qui fait ca mais tu peux faire une requete toute bete (je ne sais pas si ca peut marcher sous MySql) :

select count(table_name) from user_tables;
where table_name ="nom de ta table";
group by table_name;


Si ca te renvoie 0, elle n'existe pas sinon elle existe

vala :)
----------
A computer lets you make more mistakes faster than any inven

Répondre à ludvo

2

flokocha, le 8 avr 2004 à 10:15:55

Ou bien tu peux essayer

mysql_query("SELECT * FROM tatable") or die ("La table n'existe pas")

Ca devrait fonctionner ça non?

Répondre à flokocha

3

schlim, le 8 avr 2004 à 12:56:08

Ouaip... je vais essayer... en tous cas je vous remercie

Répondre à schlim

4

Evan, le 26 fév 2007 à 11:51:25

Les réponses ci-dessus ne sont pas bonnes, car elles considèrent qu'une table n'existe pas quand elle est vide...

La bonne solution :

function mysql_table_exists($table , $db) {
$tables=mysql_list_tables($db);
while (list($temp)=mysql_fetch_array($tables)) { if($temp == $table) { return 1; } }
return 0;
}

Répondre à Evan

5

ouckileou, le 29 jui 2007 à 03:39:27
  • +15

Salut,

en fait pour que le test à l'aide d'un SELECT fonctionne, il aurait fallu tester le code d'erreur MySQL retourné. Il me semble que c'est 2 si la table n'existe pas.

Ta petite fonction est bien (déjà c'est réutilisable et tout), mais la fonction PHP est dépréciée : http://fr.php.net/manual/fr/function.mysql-list-tables.php

Ils suggèrent d'utiliser la requête :
SHOW TABLES [FROM db_name] [LIKE 'pattern']

Ce qui nous donnerait ta fonction actualisée :

function mysql_table_exists($table , $db) {
	$requete = 'SHOW TABLES FROM '.$db.' LIKE \''.$table.'\'';
	$exec = mysql_query($requete);
	return mysql_num_rows($exec);
}


++

Edit : en fait j'ai relu plus attentivement et le SHOW TABLE est la bonne syntaxe de la solution proposé en 1. Quant au 2, il n'aurait pas renvoyé d'erreur si la table était vide, mais par contre il aurait considéré que la table n'existe pas alors que la requête aurait pu échouer pour mille autres raisons :)

Répondre à ouckileou

7

 Elengal, le 6 avr 2008 à 12:27:22

Bonjour,

je découvre cette solution à ce problème qui m'intéresse.

Et j'aurais voulu savoir (car je débute aussi)
s'il possible d'écrire ceci?

function mysql_table_exists($table , $db) {
$tables=mysql_list_tables($db);
while (list($temp)=mysql_fetch_array($tables)) { if($temp == $table) { return 1; } }
mysql_query("CREATE TABLE ".$table." (id INT PRIMARY KEY (id))");
}


Merci à bientôt

Répondre à Elengal

6

jipegz, le 4 aoû 2007 à 19:55:14
  • +2

Flokocha, je te remercie, tu viens de me sortir d'une journée de recherche presque complète. :)

Répondre à jipegz