MySQLi - Methoden
1. Feinheiten
Also, die MySQLi-Erweiterung besteht aus drei Klassen. Gut, es gibt noch zwei andere, aber die sollen erst mal keine Rolle spielen.
- MySQLi
- MySQLi_STMT
- MySQLi_Result
2. Aufgabenverteilung
Jede Klasse ist für etwas ganz Spezifisches zuständig. MySQLi kümmert sich um die allgemeinen Dinge, also Verbindung aufbauen, Datenbank auswählen, Queries abschicken und dergleichen. MySQli_STMT ist ausschließlich für Prepared Statements zuständig und MySQLi_Result sorgt dafür, dass man die Datensätze einer Abfrage zurückbekommt. Einfach ausgedrückt.
3. Doppelt gemoppelt
Durch diese Aufteilung gibt es Methoden und Eigenschaften, die mehrfach existieren. Also zum Beispiel affected_rows
,
close
oder field_count
. Aber keine Angst, wegen der vorgeschriebenen Vorgehensweise braucht man sich
zumindest bei der objektorientierten Schreibweise keine großen Sorgen zu machen, dass etwas in die Hose geht. Höllisch aufpassen
müssen dagegen die "Ich-mach-das-prozedural-so-wie-immer"-Leute. Denn da gibt es Unterschiede beim Funktionsnamen.
4. Funktionsweise
Objektorientiert
Will man auf Methoden oder Eigenschaften der MySQLi_STMT- beziehungsweise MySQLi_Result-Klasse zugreifen, so arbeitet man ganz einfach mit Referenzvariablen.
// MySQLi Prepared Statement, Referenz ist $stmt
$mysqli = new mysqli (...);
$query = '...';
$stmt = $mysqli -> prepare($query);
$stmt -> execute();
// MySQLi_Result Ergebnis holen, Referenz ist $result
$query = 'SELECT bla FROM blubb';
if ($result = $mysqli -> query($query))
{
while ($row = $result -> fetch_assoc())
{
...
}
}
Prozedural
Hier muss man den jeweils kompletten Funktionsnamen angeben. Außerdem benötigt man ebenfalls eine Referenzvariable für die Ressourcenkennung, denn die muss den Funktionen als Parameter übergeben werden.
// MySQLi_STMT Prepared Statement, Referenz ist $stmt
$mysqli = mysqli_connect (...);
$query = '...';
$stmt = mysqli_prepare($mysqli, $query);
mysqli_stmt_execute($stmt);
// MySQLi_Result Ergebnis holen, Referenz ist $result
$query = 'SELECT bla FROM blubb';
if ($result = mysqli_query($link, $query))
{
while ($row = mysqli_fetch_assoc($result))
{
...
}
}
Gottlob hat man bei den Funktionen, die Datensätze zurückgeben, darauf verzichtet solche Monsternamen wie mysqli_result_fetch_assoc
zu nehmen.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt