Page 1 sur 1

Comment savoir si une table existe ?

Posté : 04 juin 2005, 00:31
par zouetchou
Bonsoir,

Comment savoir si une table existe dans une bdd avant d'insérer des données?

EX: Si la table 'nomdelatable' existe alors 'insert into ....'

Merci

Posté : 04 juin 2005, 08:26
par Cyrano
En principe, on ne crée pas les tables "à la demande", on crée toutes les tables au départ même si elles sont toutes vides.

Mais ce que tu peux faire, c'est de lancer l'insertion et éventuellement de récupérer l'erreur qui sera retournée si la table n'existe pas. Exemple:

Code : Tout sélectionner

INSERT INTO xyz VALUES ( 'abc', 'def' )
Retour si la table n'existe pas:

Code : Tout sélectionner

#1146 - Table 'test.xyz' doesn't exist
Après la requête d'insertion, tu fais un test sur le numéro d'erreur:
if(mysql_errno == 1146)
{
    $nouvelle_table = "CREATE TABLE ...";
}
Et une fois que c'est fait tu relances l'insertion.

Posté : 04 juin 2005, 14:24
par pascaltje
on peut obtenir une liste des tables existantes via la fonction mysql_list_tables:
http://fr2.php.net/manual/fr/function.m ... tables.php

mais cyrano a raison de te prévenir: si tu dois créer des tables à la volée dans le script, c'est qu'il y a probablement un problème de conception.

A+

Pascal