tabelle mit PHP erstellen aber vorher auf vorhandensein checken

SirToby

Erfahrenes Mitglied
Hallo!

Ich suche nach eine Möglichkeit, mittels PHP eine Tabelle zu erstellen. Allerdings soll vorher nachgeschaut werden in der Datenbank, ob die Tabelle nicht schon existiert, wenn ja, wird das script abgebrochen.

Da ich ein absoluter Newbie bin, was PHP und MySQL angeht, sei hier mein wohl verbesserungsbedürftiger Quellcode hingeposted:

PHP:
<?php
  mysql_connect("localhost","loginname","meinpw");
  mysql_select_db("meine_datenbank");
  $tabelleda = mysql_list_tables();
  if ($tabelleda != 'news')
	create table news (
	  id INT AUTO_INCREMENT PRIMARY KEY,
	  titel VARCHAR(60),
	  inhalt TEXT,
	  datum DATETIME,
	  autor VARCHAR(15)
	);
  else exit;
?>
 
hm

habe mal ein wenig recherchiert und experimentiert, aber der kommt mit dem mysql_list_tables(); - befehl net zu rande - keine ahnung warum, dabei habe ich mir die syntax schon dazu angesehen und nich wirklich was gepeilt.

PHP:
$tabelleistda = False;
  $tabelleda = mysql_list_tables();
  $createtable = "CREATE TABLE news (
            	  id INT AUTO_INCREMENT PRIMARY KEY,
            	  titel VARCHAR(60),
            	  inhalt TEXT,
            	  datum DATETIME,
            	  autor VARCHAR(15)
                  )";
  if ($tabelleda) {
    while ($row = mysql_fetch_row($tabelleda)) {
      if ($row == "news") {
	    $tabelleistda = True;
	  }
    }
  }
  if ($tabelleistda == "True")
	{mysql_query($createtable);
  }	
  else {
    print "Tabelle schon vorhanden!";
	exit;
  }
 
das gibt es doch net

Der Befehl mysql_list_tables(); benötigte die Angabe der Datenbank, auf die er zugreifen sollte.
Das Problem hätte ich somit aus der Welt geschafft.

Hier das Script:
PHP:
$tabelleistda = False;
  $tabelleda = mysql_list_tables("jonnyb_in_israel_de_2");
  $createtable = "CREATE TABLE news (
            	  id INT AUTO_INCREMENT PRIMARY KEY,
            	  titel VARCHAR(60),
            	  inhalt TEXT,
            	  datum DATETIME,
            	  autor VARCHAR(15)
                  )";
  if ($tabelleda) {
    while ($row = mysql_fetch_row($tabelleda)) {
      if ($row == "news") {
	    $tabelleistda = True;
	  }
    }
  }
  if ($tabelleistda == "False")
	{mysql_query($createtable);
  }	
  else {
    print "Tabelle schon vorhanden!";
	exit;
  }

Doch ich bekomme immer als Ergebnis-Meldung, dass die Tabelle schon vorhanden sei.
Wenn ich nun in der Datenbank nachschaue, stelle ich fest, dass das gar nicht stimmt.

Woran kann das liegen? Hoffentlich weiß jemand hier eine Antwort darauf....irgendwas ist da im Quellcode noch im Argen.....:mad:
 
wen es interessiert.....

Wen der Thread hier überhaupt noch interessiert - ich habe eine allgemein gültige Lösung gefunden:

PHP:
<?php
/* create_news_table.php
 Script by Tobias Borgert */
  mysql_connect("localhost","meinedb","meinpw");
  mysql_select_db("meinedb");
  $tabelleistda = False;
  $tabelleda = mysql_list_tables("meinedb");
  $createtable = "CREATE TABLE news (
            	  id INT AUTO_INCREMENT PRIMARY KEY,
            	  titel VARCHAR(60),
            	  inhalt TEXT,
            	  datum DATETIME,
            	  autor VARCHAR(15)
                  )";
  if ($tabelleda) {
    while ($row = mysql_fetch_row($tabelleda)) {
      if ($row[0] == "news") {
	    $tabelleistda = True;
	  }
    }
  }
  if ($tabelleistda == False) {
    mysql_query($createtable);
	print "Tabelle erstellt!";
  }	
  else {
    print "Tabelle schon vorhanden!";
	exit;
  }
?>

Ob das auch als kleines Tutorial geeignet ist?
 
Zurück