Ce face mysqli_change_user
Funcția autentifică din nou conexiunea cu alt utilizator, fără să o închidă. Starea sesiunii este resetată: tranzacțiile neterminate sunt anulate, tabelele temporare și variabilele de sesiune dispar.
Este utilă de exemplu când un script de administrare trebuie să ruleze câteva interogări cu un utilizator care are mai puține drepturi.
Parametri
| Parametru | Descriere |
|---|---|
$mysql |
Conexiunea. |
$username |
Noul utilizator. |
$password |
Parola lui. |
$database |
Baza de date sau null pentru niciuna. |
Ce returnează
true la succes. Din PHP 8.1, la eroare aruncă mysqli_sql_exception.
Exemple
Exemplul 1: Utilizator doar pentru citire
<?php
$conn = mysqli_connect("localhost", "ana", "parola_ta", "magazin");
echo mysqli_fetch_column(mysqli_query($conn, "SELECT CURRENT_USER()")) . "\n";
mysqli_change_user($conn, "raport", "parola_raport", "magazin");
echo mysqli_fetch_column(mysqli_query($conn, "SELECT CURRENT_USER()")) . "\n";
try {
mysqli_query($conn, "DELETE FROM produse");
} catch (mysqli_sql_exception $e) {
echo "Eroare " . $e->getCode() . ": utilizatorul raport nu are drept de ștergere.";
}
Rezultat (cu un server MySQL și utilizatorul raport, care are doar drept de SELECT)
ana@localhost
raport@localhost
Eroare 1142: utilizatorul raport nu are drept de ștergere.
Greșeli frecvente
- Schimbi utilizatorul în mijlocul unei tranzacții. Tranzacția este anulată fără niciun mesaj.
Comenzi înrudite
mysqli_connect: Deschide o conexiune la un server MySQL sau MariaDB și returnează obiectul conexiunii.mysqli_select_db: Alege baza de date implicită pentru interogările următoare de pe conexiune.