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 $host = ?,
    string $username = ?,
    string $passwd = ?,
    string $dbname = ?,
    int $port = ?,
    string $socket = ?,
    int $flags = ?
): bool

Prozeduraler Stil

mysqli_real_connect(
    mysqli $link,
    string $host = ?,
    string $username = ?,
    string $passwd = ?,
    string $dbname = ?,
    int $port = ?,
    string $socket = ?,
    int $flags = ?
): 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.

host

Kann entweder ein Hostname oder eine IP-Adresse sein. Wenn diesem Parameter der Wert null oder die Zeichenkette "localhost" übergeben wird, wird angenommen, dass es sich um den aktuellen Rechner handelt. Wenn möglich, werden Pipes anstelle des TCP/IP-Protokolls verwendet.

username

Der MySQL-Benutzername

passwd

Falls nicht angegeben oder null, versucht der MySQL-Server, den Benutzer nur anhand der Benutzerdatensätze zu authentifizieren, die kein Passwort haben. Dadurch kann ein Benutzername mit verschiedenen Berechtigungen verwendet werden (je nachdem, ob ein Passwort angegeben wurde oder nicht).

dbname

Falls angegeben, bestimmt dies die Datenbank, die standardmäßig bei Abfragen verwendet werden soll.

port

Gibt die Portnummer an, über die versucht wird, eine Verbindung mit dem MySQL-Server herzustellen.

socket

Gibt den Socket oder die benannte Pipe an, der/die verwendet werden soll.

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 host 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.

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_TIMEOUT5)) {
    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::init();

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

        if (!
parent::options(MYSQLI_OPT_CONNECT_TIMEOUT5)) {
            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($linkMYSQLI_INIT_COMMAND'SET AUTOCOMMIT = 0')) {
    die(
'Setzen von MYSQLI_INIT_COMMAND ist fehlgeschlagen');
}

if (!
mysqli_options($linkMYSQLI_OPT_CONNECT_TIMEOUT5)) {
    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 add a note

User Contributed Notes 2 notes

up
-5
Pom
13 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
-8
php-nospam325123 at brainpower dot no-ip dot org
12 years ago
this is because it tries to use sockets with the string localhost this is documented en known
To Top