Ce face mysqli_connect
mysqli_connect este primul pas pentru orice lucru cu o bază de date MySQL: primește serverul, utilizatorul, parola și numele bazei de date și returnează un obiect mysqli. Acest obiect se dă apoi tuturor celorlalte funcții mysqli_*. Același lucru se poate scrie orientat pe obiecte: new mysqli(...).
Din PHP 8.1, o conexiune eșuată aruncă excepția mysqli_sql_exception (în versiunile vechi, funcția returna false și afișa un avertisment). Imediat după conectare, setează codarea utf8mb4 cu mysqli_set_charset, ca diacriticele să fie salvate corect.
Exemplele de pe această pagină folosesc baza de date magazin, cu tabelul produse (coloanele id INT AUTO_INCREMENT, nume VARCHAR(100) NOT NULL, pret INT și stoc INT) și patru rânduri: Laptop (3200 lei, 5 buc.), Mouse (80 lei, 40 buc.), Monitor (900 lei, 0 buc.) și Tastatură (150 lei, 12 buc.). Comenzile SQL sunt explicate în secțiunea MySQL. Rezultatele au fost scrise pentru MySQL 8, pentru că exemplele au nevoie de un server de baze de date.
Parametri
| Parametru | Descriere |
|---|---|
$hostname |
Serverul: "localhost" (prin socket Unix) sau o adresă, de exemplu "127.0.0.1" (prin TCP). |
$username |
Utilizatorul MySQL. |
$password |
Parola utilizatorului. |
$database |
Opțional. Baza de date folosită implicit. |
$port |
Opțional. Portul, implicit 3306. |
$socket |
Opțional. Calea către socket-ul Unix. |
Ce returnează
Un obiect mysqli. Din PHP 8.1, la eroare aruncă mysqli_sql_exception.
Exemple
Exemplul 1: Conectare cu diacritice corecte
<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");
mysqli_set_charset($conn, "utf8mb4");
echo "Conectat: " . mysqli_get_host_info($conn) . "\n";
echo "Server MySQL " . mysqli_get_server_info($conn);
Rezultat (cu un server MySQL și tabelul produse de mai sus)
Conectat: Localhost via UNIX socket
Server MySQL 8.0.39
Exemplul 2: Tratarea unei conexiuni eșuate
Detaliile erorii merg în jurnal; vizitatorul vede doar un mesaj general.
<?php
try {
$conn = mysqli_connect("localhost", "ana", "parola_gresita", "magazin");
} catch (mysqli_sql_exception $e) {
error_log("MySQL: " . $e->getMessage());
echo "Site-ul are o problemă temporară. Încearcă din nou mai târziu.\n";
echo "(în jurnal: " . $e->getMessage() . ")";
}
Rezultat (cu un server MySQL și tabelul produse de mai sus)
Site-ul are o problemă temporară. Încearcă din nou mai târziu.
(în jurnal: Access denied for user 'ana'@'localhost' (using password: YES))
Exemplul 3: Varianta orientată pe obiecte
<?php
$conn = new mysqli("127.0.0.1", "ana", "parola_ta", "magazin", 3306);
$conn->set_charset("utf8mb4");
echo $conn->host_info;
Rezultat (cu un server MySQL și tabelul produse de mai sus)
127.0.0.1 via TCP/IP
Greșeli frecvente
- Scrii parola bazei de date direct în fișierele publicate pe GitHub. Pune datele de conectare într-un fișier de configurare separat, care nu este urcat în depozit.
- Uiți
mysqli_set_charset($conn, "utf8mb4"). Diacriticele apar ca?sauÄ�în pagină sau în baza de date. - Verifici
if (!$conn)pe PHP 8.1+. Funcția nu mai returneazăfalse, ci aruncă o excepție: foloseștetry/catch.
Comenzi înrudite
mysqli_query: Trimite o interogare SQL către baza de date. Pentru SELECT returnează un rezultat din care citești rândurile.mysqli_close: Închide o conexiune MySQL deschisă cu mysqli_connect.mysqli_error: Returnează mesajul de eroare al ultimei operații MySQL de pe conexiune, sau text gol dacă nu a fost eroare.PDO: PDO este interfața PHP comună pentru baze de date: același cod funcționează cu MySQL, PostgreSQL sau SQLite.