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_connectpe un obiect creat cumysqli_connect. Obiectul este deja conectat;mysqli_real_connectse folosește cumysqli_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.