Hauptmenü

Untermenü

MySQLi - Initialisierung

1. Verbindungsaufbau

Hier gibt es mehrere Möglichkeiten, wobei ich doch einige kleine Zweifel an der Sinnhaftigkeit all dieser Varianten haben. Ich stelle sie euch trotzdem vor. Für welche ihr euch entscheidet, sei euch überlassen.

2. Über eine Referenzvariable

Die MySQLi-Klasse verfügt über einen Konstruktor, mit dem die Verbindung zum MySQL-Server aufgebaut wird. Mann (oder Frau) muss einfach nur die Zugangsdaten angeben


$mysqli = new mysqli('host''user''passwort''datenbank');

und hat dann Zugriff auf die Eigenschaften und Methoden.


echo $mysqli -> server_info;

3. Über eine Kindklasse

Das Prinzip hab ich hier schon bis zum Erbrechen erläutert. Wenn die Elternklasse (hier also mysqli) über einen Konstruktor verfügt, so wird der nicht automatisch ausgelöst, wenn die Kindklasse ebenfalls über einen verfügt. Da es bei mysqli aber keine vorgegebenen Eigenschaften für die Verbindung zu einer Datenbank gibt, muss die abgeleitete Klasse ebenfalls über einen Konstruktor verfügen.


class Db extends mysqli
{
  public function __construct ($host$user$pw$db)
  {
    parent::__construct ($host$user$pw$db);
  }
}
$db = new Db('host''user''pw''db');

Der weitere Zugriff erfolgt hier natürlich über $this.

4. init()

Hierbei handelt es sich um eine Methode, die man nur dann benötigt, wenn man vor dem eigentlichen Verbindungsaufbau zu einer Datenbank noch diverse Optionen setzen möchte. Zu den Details komme ich später. Die Verbindung selber geschieht dann über real_connect.


$mysqli mysqli_init();
...
$mysqli -> real_connect('host''user''pw''db')

In einer Kindklasse ist die Vorgehensweise zum Beispiel so.


class Db extends mysqli
{
  public function __construct ($host$user$pw$db)
  {
    parent::init ($host$user$pw$db);
    ...
    parent::real_connect($host$user$pw$db)
  }
}
$db = new Db('host''user''pw''db');

5. Prozedural

Hierzu gibt es eigentlich nicht viel zu sagen. Zumal das doch sehr stark an die "normale" MySQL-Erweiterung erinnert. Und immer an die Referenzvariable denken.


// Normal
$mysqli mysqli_connect('host''user''pw''db');
// Per init()
$mysqli mysqli_init();
...
mysqli_real_connect($mysqli'host''user''pw''db')

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt