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