mysqli::__construct

mysqli::connect

mysqli_connect

(PHP 5, PHP 7, PHP 8)

mysqli::__construct -- mysqli::connect -- mysqli_connectBaut eine neue Verbindung zum MySQL-Server auf

Beschreibung

Objektorientierter Stil

publicmysqli::__construct(
    ?string$hostname = null,
    ?string$username = null,
    ?string$password = null,
    ?string$database = null,
    ?int$port = null,
    ?string$socket = null
)
publicmysqli::connect(
    ?string$hostname = null,
    ?string$username = null,
    ?string$password = null,
    ?string$database = null,
    ?int$port = null,
    ?string$socket = null
): bool

Prozeduraler Stil

mysqli_connect(
    ?string$hostname = null,
    ?string$username = null,
    ?string$password = null,
    ?string$database = null,
    ?int$port = null,
    ?string$socket = null
): mysqli|false

Baut eine Verbindung zum MySQL-Server auf.

Parameter-Liste

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 Parameter hostname bestimmt.

Rückgabewerte

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.

Fehler/Exceptions

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.

Changelog

VersionBeschreibung
8.1.0mysqli::connect() gibt bei Erfolg nun true anstelle von null zurück.
7.4.0 Alle Parameter sind nun nullable (akzeptieren den null-Wert).

Beispiele

Beispiel #1 mysqli::__construct()-Beispiel

Objektorientierter Stil

<?php


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');


$mysqli->set_charset('utf8mb4');

printf("Erfolg... %s\n", $mysqli->host_info);

Prozeduraler Stil

<?php


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');


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);
}


$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());
}


mysqli_set_charset($mysqli, 'utf8mb4');
if (
mysqli_errno($mysqli)) {
throw new
RuntimeException('mysqli-Fehler: ' . mysqli_error($mysqli));
}

Anmerkungen

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 Umgebungsvariable SYSTEMROOT nicht verfügbar und PHP hat dann ein Problem beim Laden von Winsock.

Siehe auch

To Top