Abfrage ob Tabelle schon existiert?

hi all

ich will in meinen script ne abfrage an eine datenbank machen ob die tabelle xy schon existiert.

also folgendes

// Verbindung wurde aufgbeaut und besteht
[php]
$slct=„Select * from Datenbank“;
$abfrage=mysql_query($slct);

if($abfrage)
{
}
[/php]

ja mir stellt sich die frage wie ich die abfrage gestalte …

wie kann ich da raus kriegen ,d ass ne fehlermeldung vorleigt? ^^

mfg

Da dürfte dir show tables helfen
http://www.little-idiot.de/mysql/mysql-126.html
alle tabellen holen → abfragen ob deine dabei ist

jo :slight_smile: stmmt ^^ thx

aber hab noch nen kleines prob…

ich würde das dann so machen:
[php]
$tabelle="show tabelle from datenbank where tabelle=„gesuchtetabelle“;
$tabelleda=mysql_query($tabelle);

if($tabelleda)
{
dann mach das ( weil die tabelle da sit )
}
else
{
erstelle die gesuchte tabelle
}
[/php]

-.- so? ^^

So:
[php]
$sql = „SELECT
Titel
FROM
Tabelle
ORDER BY
Irgendetwas DESC;“;

$result = mysql_query($sql) OR die(mysql_error());
// Vorhandene Beiträge als Liste ausgeben
if(mysql_num_rows($result))
{
while($row = mysql_fetch_assoc($result))
{
echo’Es sind Einträge vorhanden…
}
}
else
{
echo’Es sind keineEinträge vorhanden’;
}
?>[/php]
Das ORDER BY stellt die Liste nach der Reihe auf.
Wenn du eine ID hast oder Datum, dann am Besten ORDER BY Datum, ID, usw…

MfG, matibaski

Wenn du nur wissen willst, ob eine Tabelle existiert dann so:

[php]
mysql_connect(„localhost“, „root“, „“);

$tabelle=„show tables from DATENBANKNAME“;
$tabelleda=mysql_query($tabelle);

while($table = mysql_fetch_array($tabelleda)) {
if ($table[0] == „TABELLENNAME“) {
echo "GIBT ES: " . $table[0];
}
}
[/php]

DATENBANKNAME und TABELLENNAME bitte austauschen :stuck_out_tongue:

Hallo,

Schau mal hier im MySQL Forum. Der Beitrag zeigt wie es kürzer geht. Falls du noch MySQL 4.x hast schau dir mal die letzte Antwort im MySQL Forum an.

Falls du 'ne Tabelle nur löschen, oder anlegen willst falls sich exisitiert bzw. noch nicht existiert kannst du auch mal nach dem Befehl IF EXISTS schauen.

N43

Hui stimmt, die Methode ist natürlich schicker und einfacher.
notier

dankeschonmal für alle antworten :wink:

so hab jetzt noch folgendes problem

[php]
$tabelle=„show tables from db3546_371“;
$tabelleda=mysql_query($tabelle);

while($tabelle = mysql_fetch_array($tabelleda))
{
if (tabelle[0] == „extern“)
{
echo "GIBT ES: " . $tabelle[0];
echo „
“;
}
else
{
$eintrag=„CREATE TABLE extern (ID INT, URL VARCHAR(60),Datum DATETIME);“;
mysql_query($eintrag);
$pass=pwd();
echo $pass;
mailsend();
}

}
[/php]

das soll folgendes bewirken.

das soll überprüfen ob die folgende Tabelle schon vorhanden ist.
Wenn die Tabelle „extern“ vorhanden ist soll er nur ausgeben, dass es die tabelel gibt und mehr nicht.

Wenn es die tabelle noch nicht gibt soll er die folgende tabelle anlegen und ein password generieren und eine E-Mail schicken.

das problem ist auch wenn die tabelle vorhanden ist schickt er die email aber awrum oO?

ich denke ma es liegt an der bedingng der if abfrage

weiss jemand ne lösung? ^^

mfg
danke schonmal

send’ doch einfach das hier:

[php]

<?php $sql = "SELECT TABLE IF EXISTS tabellenname"; ?>

[/php]

Nils aka XraYSoLo

Hallo,

du musst mit einem Flag arbeiten, denn sobald es mehrere Tabellen in der DB gibt wird der else-Teil immer min. einmal ausgeführt.

[php]$table_exists = false;
while($tabelle = mysql_fetch_array($tabelleda)) {
if (tabelle[0] == „extern“) {
$table_exists = true;
break;
}
}

if (!$table_exists) {
$eintrag=„CREATE TABLE extern (ID INT, URL VARCHAR(60),Datum DATETIME);“;
mysql_query($eintrag);
$pass=pwd();
echo $pass;
mailsend();
}[/php]
N43

danke :wink:

mfg

ph|L