(PHP 5, PHP 7, PHP 8)
mysqli::real_connect -- mysqli_real_connect — Baut eine Verbindung zu einem MySQL-Server auf
Objektorientierter Stil
$hostname
= null
,$username
= null
,$password
= null
,$database
= null
,$port
= null
,$socket
= null
,$flags
= 0Prozeduraler Stil
$mysql
,$hostname
= null
,$username
= null
,$password
= null
,$database
= null
,$port
= null
,$socket
= null
,$flags
= 0Baut 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
.
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 Parameterhostname
bestimmt.
flags
Mit dem Parameter flags
können verschiedene
Verbindungsoptionen eingestellt werden:
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.
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.
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
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.