Prüfen ob eine Tabelle in der DB enthalten ist

Steusi

Nasenbär
Hallo Leute, ich würde gern prüfen, ob eine Tabelle bereits in meiner DB enthalten ist, da ich jedes Jahr eine neue anlegen lassen möchte mit dem Jahr im Namen.

Nur irgendwie klappt es bei mir nicht, erst habe ich es mit der Funktion "mysql_list_tables" probiert, doch da dieses Funktion nichts anderes macht als "SHOW TABLES" wie ich bei php.net gelesen habe, dachte ich mir folgendes muss doch auch klappen:

Tests:
PHP:
$TabellenName = "daten".$jahr;

$test = "SHOW TABLES LIKE '".$TabellenName."' FROM DB";
$showTables = mysql_query($test);
var_dump($test); 
// "SHOW TABLE LIKE 'daten2009' FROM DB"

var_dump(mysql_fetch_array($showTables)); 
//Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result 
//bool(false)
eigentlicher Code
PHP:
if(!mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$TabellenName."' FROM DB"))){
// Warning: mysql_num_rows(): supplied argument is not a valid MySQL result

// create new table
}
Bitte guckt einmal rüber, ich seh den Fehler nicht (aber gleich ist Mittagspause ^^)
 
Hi,

was kommt raus, wenn du in dem eigendlichen Code das mysql_num_rows() weglässt?
Hast du mal mysql_error() ausgeben lassen?
 
Danke Felix Jacobi, klappt wunderbar! Manchmal sieht man den Wald vor lauter Bäumen nicht, dank dir!
 
Hi,

versuche mal das hier:

PHP:
SHOW TABLE STATUS FROM [NAME DER DATENBANK]

Damit bekommst du unter anderem ein Feld mit dem Namen "Name" zurück und das enthält den Namen der Tabellen.
 
Ich habe das mal wie folgt gemacht.

Einfach SQL Abfrage "DESC testtable"

und Wenn dann die errorno 1146 ist, existiert die Tabelle nicht.

Geht in 3 Zeilen.

Hoffe ich konnte helfen.

lg Darian
 
Hi,

übrigens ist das erste, was man bei dem Fehler

Code:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result

macht, sich die Fehlermeldung ausgeben zu lassen. => [phpf]mysql_error[/phpf]
MySQL sagt Dir dann schon, was falsch ist. Bei einem Syntaxfehler bekommst Du z.B. die genaue Stelle angezeigt.

LG
 
Danke, danke Ihr überschüttet mich ja gleich mit guten Tipps. Es funktioniert, Ihr seit die Besten!;)
 

Neue Beiträge

Zurück