Jan 01

Mit PHP Überprüfen ob eine Datenbank existiert

Tag: PHP Tipps und TricksLeichti @ 11:23 pm

Oft, wenn ich kleinere oder größere Scripte schreibe ist es immer nervig die MYSQL Datenbank neu anzulegen, und dazu immer eine install Datei aufzurufen. Auch ist es dann für andere Leute, dennen man das Script zum Download anbietet, "nervig" das "Ding" zu installieren. Doch man kann hier ganz einfach ein bisschen Luxus einbauen. Indem man die Datenbank nur dann installiert, wenn sie vorhanden ist.

Grundsätzlich gibt es dafür jetzt zwei Möglichkeiten, einmal eine SQL Funktion und einmal mit Hilfe von PHP.
Die erste Möglichkeit hierfür wäre, das Ganze mit Hilfe von if not exists (SQL Code) zu realisieren, das würde dann folgendermaßen aussehen.

 
mysql_query("CREATE TABLE IF NOT EXISTS
		tabelle (spalte spaltentyp, [...])");
 

Die zweite, für mich schönere Lösung wäre mittels PHP zu überprüfen ob eine Tabelle in der Datenbank schon vorhanden ist. Dazu schreiben wir uns eine kleine Funktion die wir immer, wenn wir sie brauchen verwenden können.

 
	function checktable($tablename){
		$query = "SHOW TABLES LIKE ".$tablename;
		if(mysql_num_rows(mysql_query($query))) {
			return true;
		}
 
		else{
			return false;
		}
	}
 

mysql_num_rows(mysql_query("SHOW TABLES LIKE ".$tablename."")) gibt true bzw eine Zahl zurück, wenn die Tabelle mit dem Namen der in der Variable $tablename gespeichert ist existiert und false wenn diese Tabelle noch nicht Existent ist.

Diese Funktion können wir nun folgendermaßen aufrufen:

 
if(checktable("News")) {
	echo "Tabelle News wurde bereits angelegt";
}
else {
	echo "Tabelle News wurde noch nicht angelegt";
	}
 


Tags: , , , ,

Ein Kommentar zu “Mit PHP Überprüfen ob eine Datenbank existiert”

  1. emisan says:

    danke für den Tipp mit “SHOW TABLES…” , war gerade auf der Suche nach einer Äquivalenten Lösung für
    die Prüfung der Existenz von Tabellen… daraufhin kam mir die Frage ob ich das auch mit DATABASE(S) machen kann…jup !….geht auch : SHOW DATABASES LIKE (DATABASE | SCHEMA);

Dein Kommentar