Re: Test, ob Tabelle existiert

Re: Test, ob Tabelle existiert

am 23.05.2005 18:43:41 von Thomas Hamacher

Martin Lemke schrieb:
> Mein aktueller Versucht führt leider nicht zum Ziel:
>
> $myTable='MyTable';
> $tables=array();
>
> $result=mysql_query("SHOW TABLES FROM myDatabase");
> if ($result)
> $tables[] = mysql_fetch_row($result);

Was soll das sein? Schau dir mal mit var_dump() an, was dein Array
$tables nach dieser Zuweisung enthält. Du suchst etwas wie

if($result)
while($tables[] = mysql_fetch_rows($result));

, aber ich würde nicht alle Tabellen holen und in der Anwendung
durchsuchen, sondern der Datenbank die Suche überlassen.

> // Folgende Abfrage soll prüfen, ob die Tabelle bereits existiert:
> if (!in_array($myTable,$tables))

$result = mysql_query("SHOW TABLES FROM myDatabase LIKE '$myTable'");

if($result) {
if(mysql_num_rows($result) == 0) {
// Tabelle existiert nicht
}

else {
// Tabelle existiert
}
}

oder

if($result) {
if(!mysql_fetch_row($result)) {
// Tabelle existiert nicht
}

else {
// Tabelle existiert
}
}

> Leider kommt hier immer FALSE heraus und es wird versucht, eine bereits
> existierende Tabelle anzulegen, was natürlich mit einem Fehler abbricht.

Sicher, weil du die while-Schleife vergessen hast enthält $tables immer
nur einen Datensatz.