MySqli Abfrage ob Tabelle existiert

Spelmann

Erfahrenes Mitglied
Hi.

Meine Recherche hat nix gebracht. Bei meiner Methode des Datenbankaufrufes funktioniert keine der geposteten Methoden. Das MySql Handbuch finde ich auch übel sparsam formuliert.

Meine Datenbankverbindung:
PHP:
class Singleton{
			static $db = null;
			function holeVerbindung() {
				if (self::$db == null){
					self::$db = new mysqli ('localhost', 'root', 'passwort');
					}
				return self::$db;
				}
		}
		$db = Singleton::holeVerbindung();
		$db->select_db('datenbankName');

Meine Abfrage funktioniert, wenn die Tabelle existiert:
PHP:
$test = $db->query('SELECT * FROM einzelposten ');
		$row=$test->fetch_object();
		if($row->id != 0){
				echo "Tabelle existiert";
				}else{
				echo "Tabelle existiert nicht";
				}

Wenn die Tabelle aber nicht existiert bekomme ich die Fehlermeldung:
Fatal error: Call to a member function fetch_object() on a non-object in...
Ich verstehe das so, dass $row->id keinen Wert hat und deswegen nix läuft.
Wie kann ich das lösen um eine Tabelle erstellen zu können wenn sie nicht existiert?

Vielen Dank!
 
Du kannst INFORMATION_SCHEMA abfragen:

SQL:
SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 'meine_tabelle';

Wenn du das auf eine bestimmte Datenbank beschränken willst, müsstest du die WHERE-Klausel um
SQL:
AND table_schema = 'datenbankname'

erweitern.
 
Hey, cool!

So funktionierts:
PHP:
$test = $db->query('SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_name = "einzelposten"');
		$result=$test->fetch_object();
		if($result->table_name == "einzelposten"){
			echo "Tabelle existiert";
			}else{
			echo "Tabelle existiert noch nicht";
			}

Danke Dir saftmeister!
 
Wenn die Tabelle aber nicht existiert bekomme ich die Fehlermeldung:
Fatal error: Call to a member function fetch_object() on a non-object in...
Ich verstehe das so, dass $row->id keinen Wert hat und deswegen nix läuft.
Siehe mysqli::query: im Fehlerfall wird FALSE zurückgegeben, was kein Objekt ist und somit auch keine Methode fetch_object besitzen kann.

Wie kann ich das lösen um eine Tabelle erstellen zu können wenn sie nicht existiert?
Verwende eine CREATE TABLE IF NOT EXISTS Abfrage.

Grüße,
Matthias
 
Zurück