mysqli_real_connect în PHP

Conectează la server un obiect creat cu mysqli_init, folosind opțiunile setate înainte.

Sintaxă
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

Ce face mysqli_real_connect

Parametrii sunt aceiași ca la mysqli_connect, plus $flags: MYSQLI_CLIENT_SSL (conexiune criptată), MYSQLI_CLIENT_COMPRESS (compresie), MYSQLI_CLIENT_FOUND_ROWS (mysqli_affected_rows numără rândurile găsite, nu doar pe cele modificate).

Spre deosebire de mysqli_connect, care creează și conectează obiectul dintr-o dată, mysqli_real_connect folosește obiectul pregătit de tine.

Parametri

Parametru Descriere
$mysql Obiectul creat cu mysqli_init.
$hostname, $username, $password, $database, $port, $socket La fel ca la mysqli_connect.
$flags Opțional. Constante MYSQLI_CLIENT_*, unite cu |.

Ce returnează

true la succes. Din PHP 8.1, la eroare aruncă mysqli_sql_exception.

Exemple

Exemplul 1: Rânduri găsite în loc de rânduri modificate

Cu MYSQLI_CLIENT_FOUND_ROWS, un UPDATE care pune aceeași valoare numără totuși rândul.

<?php
$conn = mysqli_init();
mysqli_real_connect($conn, "localhost", "ana", "parola_ta", "magazin", null, null, MYSQLI_CLIENT_FOUND_ROWS);

mysqli_query($conn, "UPDATE produse SET pret = 80 WHERE id = 2");
echo mysqli_affected_rows($conn);

Rezultat (cu un server MySQL și tabelul produse de mai sus)

1

Exemplul 2: Timp de conectare limitat

<?php
$conn = mysqli_init();
mysqli_options($conn, MYSQLI_OPT_CONNECT_TIMEOUT, 2);

try {
    mysqli_real_connect($conn, "10.0.0.99", "ana", "parola_ta", "magazin");
} catch (mysqli_sql_exception $e) {
    echo "Serverul nu răspunde: " . $e->getMessage();
}

Rezultat (după 2 secunde, cu un server inaccesibil)

Serverul nu răspunde: Connection timed out

Greșeli frecvente

  • Apelezi mysqli_real_connect pe un obiect creat cu mysqli_connect. Obiectul este deja conectat; mysqli_real_connect se folosește cu mysqli_init.

Comenzi înrudite

  • mysqli_init: Creează un obiect mysqli neconectat, pe care îl configurezi cu mysqli_options înainte de mysqli_real_connect.
  • mysqli_options: Setează o opțiune a conexiunii, înainte de conectare: timp maxim, comandă inițială, numere native etc.
  • mysqli_ssl_set: Setează certificatele pentru o conexiune MySQL criptată (SSL/TLS), înainte de conectare.
  • mysqli_connect: Deschide o conexiune la un server MySQL sau MariaDB și returnează obiectul conexiunii.