OOP mit PHP5 - Praxistutorial 1 - Zusätzliche SQL-Methoden
1. Die Abschnitte
- Einführung
- Konstruktor und Destruktor der Db-Klasse
- Konstruktor der Db_Request-Klasse
- Der erste Zugriff
- SQL-Fehler abfangen
- Zusätzliche SQL-Methoden
- Die Auswertungsschicht
- Abfragen
- Zusammenfassung
2. Möglichkeiten
Weil die folgenden Dinge relativ lumpig sind, werde ich das Prinzip unserer Db
-Klasse nur an einem(!) Beispiel erläutern.
In der Lösung gibt es noch ein paar zusätzliche Methoden, auf die ich aber nicht eingehen werde, da der Code wohl selbst erläuternd ist.
Wer es nicht versteht, sollte sich Schritt für Schritt durch die fertige Klasse wühlen.
Ein Hinweis
Bei dem folgenden Codebeispiel gibt es keine komplette Ausnahmebehandlung. Wenn ihr das Tutorial durchgearbeitet und verstanden habt, so ist es an euch, das nachzuholen. Das gilt natürlich auch für die Methoden, die ich hier nicht erwähne. Ist übrigens eine wunderbare Testaufgabe.
3. Daten einfügen
Mit dieser Methode sollen später Datensätze per INSERT
oder UPDATE
eingefügt werden. Wer das noch für
REPLACE
haben möchte, macht das mal schön selber.
public function insertData ()
{
if ($this -> resource)
{
if (mysql_insert_id())
{
return (int) mysql_insert_id();
}
else if(mysql_affected_rows())
{
return (int) mysql_affected_rows();
}
return mysql_info();
}
}
Erläuterung
Was jetzt kommt ist gaaaanz wichtig! Also der Query wird zuerst in startQuery
ausgeführt. Wenn syntaktisch alles in Ordnung
ist, so wertet diese Methode nur das Ergebnis aus. Der Verweis auf die Ausführung der Abfrage steckt in der Eigenschaft
$this -> resource
, die einen Verweis darauf darstellt.
Die Rückgabewerte
Wenn man einen neuen(!) Datensatz einfügt, so wird die ID des besagten Eintrags zurückgeliefert. Das fangen wir mit if
(mysql_insert_id())
ab und geben den Wert zurück. Wenn dagegen mehrere Datensätze aktualisiert werden sollen, so liefert
mysql_affected_rows()
uns die Anzahl der betroffenen Einträge zurück. Wenn bei einer "Aktualisier"-Aktion dagegen gar nichts
passiert, so kann man das Ergebnis nur über mysql_info()
abfangen.
4. Wer? Wie? Was? Wo?
Manche von euch werden jetzt sicher Bauklötze staunen. Oder sich fragen, ob der Autor dieses Machwerkes ein totaler Vollhonk ist. Nee, ist er nicht! Jedenfalls nicht immer. Wer hier Verständnisprobleme haben sollte, der möge sich in Geduld üben, denn die Aufklärung folgt auf dem Fuße.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt