Hauptmenü

Untermenü

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.

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