PHP 8.3.4 Released!

mysqli::real_connect

mysqli_real_connect

(PHP 5, PHP 7, PHP 8)

mysqli::real_connect -- mysqli_real_connectBaut eine Verbindung zu einem MySQL-Server auf

Beschreibung

Objektorientierter Stil

public mysqli::real_connect(
    ?string $hostname = null,
    ?string $username = null,
    ?string $password = null,
    ?string $database = null,
    ?int $port = null,
    ?string $socket = null,
    int $flags = 0
): bool

Prozeduraler Stil

mysqli_real_connect(
    mysqli $mysql,
    ?string $hostname = null,
    ?string $username = null,
    ?string $password = null,
    ?string $database = null,
    ?int $port = null,
    ?string $socket = null,
    int $flags = 0
): bool

Baut eine Verbindung zu einer MySQL-Datenbank auf.

Diese Funktion unterscheidet sich von der Funktion mysqli_connect():

  • mysqli_real_connect() benötigt ein gültiges Objekt, das mit der Funktion mysqli_init() erstellt werden muss.

  • Mit der Funktion mysqli_options() können verschiedene Optionen für die Verbindung eingestellt werden.

  • Es gibt den Parameter flags.

Parameter-Liste

mysql

Nur bei prozeduralem Aufruf: ein von mysqli_connect() oder mysqli_init() zurückgegebenes mysqli-Objekt.

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.

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.

flags

Mit dem Parameter flags können verschiedene Verbindungsoptionen eingestellt werden:

Unterstützte Flags
Name Beschreibung
MYSQLI_CLIENT_COMPRESS Das Komprimierungsprotokoll verwenden
MYSQLI_CLIENT_FOUND_ROWS Die Anzahl der übereinstimmenden Zeilen zurückgeben, nicht die Anzahl der betroffenen Zeilen
MYSQLI_CLIENT_IGNORE_SPACE Leerzeichen nach Funktionsnamen zulassen; macht alle Funktionsnamen zu reservierten Wörtern
MYSQLI_CLIENT_INTERACTIVE interactive_timeout Sekunden der Inaktivität zulassen, bevor die Verbindung getrennt wird (anstelle von wait_timeout Sekunden)
MYSQLI_CLIENT_SSL SSL verwenden (Verschlüsselung)
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT Wie MYSQLI_CLIENT_SSL, deaktiviert aber die Überprüfung des übergebenen SSL-Zertifikats; gilt nur für Installationen, die den MySQL Native Driver und MySQL 5.6 oder höher verwenden.

Hinweis:

Aus Sicherheitsgründen wird das Flag MULTI_STATEMENT von PHP nicht unterstützt. Wenn mehrere Abfragen ausgeführt werden sollen, muss die Funktion mysqli_multi_query() verwendet werden.

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false 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

Version Beschreibung
7.4.0 Alle Parameter sind nun nullable (akzeptieren den null-Wert).

Beispiele

Beispiel #1 mysqli::real_connect()-Beispiel

Objektorientierter Stil

<?php

$mysqli
= mysqli_init();
if (!
$mysqli) {
die(
'mysqli_init ist fehlgeschlagen');
}

if (!
$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die(
'Setzen von MYSQLI_INIT_COMMAND ist fehlgeschlagen');
}

if (!
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die(
'Setzen von MYSQLI_OPT_CONNECT_TIMEOUT ist fehlgeschlagen');
}

if (!
$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
die(
'Verbindungsfehler (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}

echo
'Erfolg... ' . $mysqli->host_info . "\n";

$mysqli->close();
?>

Objektorientierter Stil, wenn die Klasse mysqli erweitert wird

<?php

class foo_mysqli extends mysqli {
public function
__construct($host, $user, $pass, $db) {
parent::__construct();

if (!
parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die(
'Setzen von MYSQLI_INIT_COMMAND ist fehlgeschlagen');
}

if (!
parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die(
'Setzen von MYSQLI_OPT_CONNECT_TIMEOUT ist fehlgeschlagen');
}

if (!
parent::real_connect($host, $user, $pass, $db)) {
die(
'Verbindungsfehler (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
}
}

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

echo
'Erfolg... ' . $db->host_info . "\n";

$db->close();
?>

Prozeduraler Stil

<?php

$link
= mysqli_init();
if (!
$link) {
die(
'mysqli_init ist fehlgeschlagen');
}

if (!
mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
die(
'Setzen von MYSQLI_INIT_COMMAND ist fehlgeschlagen');
}

if (!
mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
die(
'Setzen von MYSQLI_OPT_CONNECT_TIMEOUT ist fehlgeschlagen');
}

if (!
mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) {
die(
'Verbindungsfehler (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}

echo
'Erfolg... ' . mysqli_get_host_info($link) . "\n";

mysqli_close($link);
?>

Die obigen Bespiele erzeugen folgende Ausgabe:

Erfolg... MySQL host info: localhost via TCP/IP

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.

Siehe auch

add a note

User Contributed Notes 2 notes

up
-7
Pom
14 years ago
Notice that when using "localhost" as hostname the port option might be ignored.

If you wish to connect thru a different port than default, substitute "127.0.0.1" for localhost.
up
-18
php-nospam325123 at brainpower dot no-ip dot org
13 years ago
this is because it tries to use sockets with the string localhost this is documented en known
To Top