Comment savoir si une table existe ?

Eléphant du PHP | 84 Messages

04 juin 2005, 00:31

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

Mammouth du PHP | 19672 Messages

04 juin 2005, 08:26

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 1024 Messages

04 juin 2005, 14:24

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