(PHP 5, PHP 7, PHP 8)
mysqli::__construct -- mysqli::connect -- mysqli_connect — Baut eine neue Verbindung zum MySQL-Server auf
Objektorientierter Stil
$hostname
= null
,$username
= null
,$password
= null
,$database
= null
,$port
= null
,$socket
= null
$hostname
= null
,$username
= null
,$password
= null
,$database
= null
,$port
= null
,$socket
= null
Prozeduraler Stil
$hostname
= null
,$username
= null
,$password
= null
,$database
= null
,$port
= null
,$socket
= null
Baut eine Verbindung zum MySQL-Server auf.
hostname
Kann entweder ein Hostname oder eine IP-Adresse sein. Wenn diesem
Parameter der Wert null
übergeben wird, wird der Wert von
mysqli.default_host
übernommen. Wenn möglich, werden Pipes anstelle des TCP/IP-Protokolls
verwendet. Das TCP/IP-Protokoll wird verwendet, wenn ein Hostname und
eine Portnummer zusammen angegeben werden, z. B.
localhost:3308
.
Wenn dem Host ein p:
vorangestellt wird, wird eine
persistente (dauerhafte) Verbindung geöffnet. Bei Verbindungen, die aus
dem Verbindungs-Pool geöffnet werden, wird automatisch die Funktion
mysqli_change_user() aufgerufen.
username
Der MySQL-Benutzername oder null
, um den Benutzernamen aus der
INI-Option
mysqli.default_user zu
übernehmen.
password
Das MySQL-Passwort oder null
, um den Benutzernamen aus der INI-Option
mysqli.default_pw zu
übernehmen.
database
Die Datenbank, die standardmäßig bei Abfragen verwendet werden soll,
oder null
.
port
Die Portnummer, über die versucht wird, eine Verbindung mit dem
MySQL-Server herzustellen, oder null
, um den Port aus der INI-Option
mysqli.default_port zu
übernehmen.
socket
Der Socket oder die benannte Pipe an, der/die verwendet werden soll,
oder null
, um den Socket aus der INI-Option
mysqli.default_socket
zu übernehmen.
Hinweis:
Mit dem Parameter
socket
wird nicht explizit festgelegt, welche Art von Verbindung bei der Verbindung mit dem MySQL-Server verwendet werden soll. Wie die Verbindung zur MySQL-Datenbank hergestellt wird, wird durch den Parameterhostname
bestimmt.
mysqli_connect() gibt ein Objekt zurück, das die
Verbindung zu einem MySQL-Server repräsentiert. Bei einem Fehler wird false
zurückgegeben.
mysqli::connect() gibt bei Erfolg true
zurück.
Bei einem Fehler wird false
zurückgegeben. Vor PHP 8.1.0 wird bei Erfolg null
zurückgegeben.
If mysqli error reporting is enabled (MYSQLI_REPORT_ERROR
) and the requested operation fails,
a warning is generated. If, in addition, the mode is set to MYSQLI_REPORT_STRICT
,
a mysqli_sql_exception is thrown instead.
Version | Beschreibung |
---|---|
8.1.0 |
mysqli::connect() gibt bei Erfolg nun true
anstelle von null zurück.
|
7.4.0 |
Alle Parameter sind nun nullable (akzeptieren den null -Wert).
|
Beispiel #1 mysqli::__construct()-Beispiel
Objektorientierter Stil
<?php
/* Bevor versucht wird, eine Verbindung aufzubauen, sollte die Meldung von Fehlern für mysqli aktiviert werden */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
$mysqli->set_charset('utf8mb4');
printf("Erfolg... %s\n", $mysqli->host_info);
Prozeduraler Stil
<?php
/* Bevor versucht wird, eine Verbindung aufzubauen, sollte die Meldung von Fehlern für mysqli aktiviert werden */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
mysqli_set_charset($mysqli, 'utf8mb4');
printf("Erfolg... %s\n", mysqli_get_host_info($mysqli));
Oben gezeigte Beispiele erzeugen eine ähnliche Ausgabe wie:
Erfolg... localhost via TCP/IP
Beispiel #2 Erweitern der Klasse mysqli
<?php
class FooMysqli extends mysqli {
public function __construct($host, $user, $pass, $db, $port, $socket, $charset) {
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
parent::__construct($host, $user, $pass, $db, $port, $socket);
$this->set_charset($charset);
}
}
$db = new FooMysqli('localhost', 'my_user', 'my_password', 'my_db', 3306, null, 'utf8mb4');
Beispiel #3 Manuelle Fehlerbehandlung
Falls die Meldung von Fehlern deaktiviert ist, ist der Entwickler dafür verantwortlich, Fehler zu überprüfen und zu behandeln
Objektorientierter Stil
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
if ($mysqli->connect_errno) {
throw new RuntimeException('mysqli-Verbindungsfehler: ' . $mysqli->connect_error);
}
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
$mysqli->set_charset('utf8mb4');
if ($mysqli->errno) {
throw new RuntimeException('mysqli-Fehler: ' . $mysqli->error);
}
Prozeduraler Stil
<?php
error_reporting(0);
mysqli_report(MYSQLI_REPORT_OFF);
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (mysqli_connect_errno()) {
throw new RuntimeException('mysqli-Verbindungsfehler: ' . mysqli_connect_error());
}
/* Einstellen des gewünschten Zeichensatzes nach dem Aufbau der Verbindung */
mysqli_set_charset($mysqli, 'utf8mb4');
if (mysqli_errno($mysqli)) {
throw new RuntimeException('mysqli-Fehler: ' . mysqli_error($mysqli));
}
Hinweis:
MySQLnd nimmt immer den Standardzeichensatz des Servers an. Dieser Zeichensatz wird während des Aufbaus der Verbindung bzw. der Authentifizierung übermittelt und danach von MySQLnd verwendet.
Libmysqlclient verwendet als Standardzeichensatz den, der in der Datei my.cnf angegeben oder durch einen Aufruf von mysqli_options() vor dem Aufruf von mysqli_real_connect() aber nach mysqli_init() gesetzt wurde.
Hinweis:
Objektorientierter Stil: Wenn die Verbindung fehlschlägt, wird trotzdem ein Objekt zurückgegeben. Um zu prüfen, ob die Verbindung fehlgeschlagen ist, kann wie in den vorangegangenen Beispielen entweder die Funktion mysqli_connect_error() oder die Eigenschaft mysqli->connect_error verwendet werden.
Hinweis:
Wenn es nötig ist, Optionen zu setzen, z. B. das Zeitlimit für die Verbindung, muss stattdessen die Funktion mysqli_real_connect() verwendet werden.
Hinweis:
Der Aufruf des Konstruktors ohne Parameter entspricht dem Aufruf von mysqli_init().
Hinweis:
Der Fehler "Can't create TCP/IP socket (10106)" bedeutet in der Regel, dass in der Konfigurationsanweisung variables_order das Zeichen
E
fehlt. Wenn unter Windows die Systemumgebung nicht kopiert wird, ist die UmgebungsvariableSYSTEMROOT
nicht verfügbar und PHP hat dann ein Problem beim Laden von Winsock.