phili: Eine gute Datenbankklasse erstellen

Hallo.

Ich würde gerne eine Datenbankklasse erstellen, welche ich in all meinen zukünftigen Projekten verwenden kann.

Ich möchte keine fertige aus dem Netz nehmen, sondern sie selbst schreiben und verstehen.

Dabei tun sich mir zwei Fragen auf:

1. Welche Methoden sollte die Klasse können.

2. Wie gehe ich mit Datenbankfehlern um, bzw. Query-Fehlern?

Ich möchte, das die Klasse 2 Modis hat.
Modus 1: Programmierphase. Fehler werden ausführlich mit soviel Informationen wie nur möglich angezeigt.

Modus 2: Online-Betrieb. Fehler werden falls möglich in eine extra Tabelle geschrieben, wenn dies nicht geht, per E-Mail an mich geschickt und der Besucher wird auf die vorherige Seite oder Startseite weitergeleitet oder bekommt einfach nur ein "Vorgang fehlgeschlagen!" zu sehen.

Ich hoffe ihr könnt mir da helfen.

Bisher sieht meine Klasse so aus:

  
class database{  
        private $modus_trialanderror = true;  
	  
	function db_connect(){  
	  
	}  
	  
	function db_select_db(){  
	  
	}  
	  
	function db_close(){  
	  
	}  
	  
	function db_query(){  
	  
	}  
  
        function db_free_result(){  
	  
	}  
	  
	function db_errors(){  
	  
	}  
	  
	  
}  

Liebe Grüße,

philie

  1. und 3. Frage:

    inwiefern könnte mysqli eine Rolle für mich spielen?

    lg

    phili

  2. echo $begrüßung;

    Ich würde gerne eine Datenbankklasse erstellen, welche ich in all meinen zukünftigen Projekten verwenden kann.
    Ich möchte keine fertige aus dem Netz nehmen, sondern sie selbst schreiben und verstehen.

    Warum schaust du dir nicht die "im Netz" genauer an, versuchst sie zu verstehen und ihre Eigenschaften nach deinen Vorstellungen von Vorteil und Nachteil einzusortieren? Die daraus gezogenen Kenntnisse können dich bei deinem eigenen Vorhaben zumindest inspirieren.

    1. Welche Methoden sollte die Klasse können.

    Alle die du brauchst.

    1. Wie gehe ich mit Datenbankfehlern um, bzw. Query-Fehlern?

    Es gibt zwei Wege: einen Fehlerzustand über ein Rückgabeergebnis bekanntgeben, eine Exception auslösen.

    [...] der Besucher wird [bei Fehlern] auf die vorherige Seite oder Startseite weitergeleitet oder bekommt einfach nur ein "Vorgang fehlgeschlagen!" zu sehen.

    Würde dir als Besucher solch eine Vorgehensweise gefallen? Du kannst doch nichts dafür, dass die Datenbank grad nicht will. Du wolltest einfach nur was bestellen. Was soll's - die Konkorrenz verkauft das Zeug auch. - Biete dem Anwender Alternativen an, damit er doch noch sein Ziel erreichen kann.

    Abgesehen davon, warum sollte denn die Datenbankschnittstelle etwas von Webseiten wissen sollen? Das ist gar nicht ihre Aufgabe. Und jede Anwendung erfordert eine eigene Strategie, wie im Fehlerfall fortzufahren ist.

    inwiefern könnte mysqli eine Rolle für mich spielen?

    Am besten eine ernstzunehmende.

    Bisher sieht meine Klasse so aus:

    Wie gesagt, es kommt darauf an, was du machen willst. Willst du einfach nur mysqli kapseln und um Funktionalität erweitern? Willst du ein ORM erstellen? Willst du das komplette Datenbankhandling vor der Anwendung verbergen, so dass diese nur noch GibMirDaten($suchparameter) sagen muss und sich nicht mehr um Statements und dergleichen kümmern muss?

    echo "$verabschiedung $name";

  3. Hello,

    1. Welche Methoden sollte die Klasse können.

    Die Klasse sollte auf jeden Fall mit voneinander abhängigen Queries umgehen können, damit die Integrität der Datenbnak nicht in Frage gestellt ist.

    Dazu gehört auch eine Connection Control.

    http://www.php.net/manual/en/function.ignore-user-abort.php

    Liebe Grüße aus Syburg

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de