(PHP 5, PHP 7, PHP 8)
mysqli::change_user -- mysqli_change_user — Change l'utilisateur de la connexion
Style orienté objet
$username
, #[\SensitiveParameter] string $password
, ?string $database
): boolStyle procédural
$mysql
,$username
,$password
,$database
Tente de se connecter à la base de données spécifiée en utilisant les identifiants fournis.
Contrairement à mysqli::connect(), cette méthode ne déconnectera pas la connexion actuelle si la nouvelle connexion ne peut pas être établie.
Pour que cette fonction réussisse, les paramètres
username
et password
doivent
être valides et l'utilisateur en question doit avoir les permissions
d'accès à la base de données désirée.
Si pour une raison ou une autre, l'autorisation échoue, l'utilisateur
courant sera conservé.
mysql
Seulement en style procédural : Un objet mysqli retourné par la fonction mysqli_connect() ou mysqli_init().
username
Le nom d'utilisateur MySQL.
password
Le mot de passe MySQL.
database
Le nom de la base de données. Si null
ou une chaîne vide est passée,
la connexion au serveur sera ouverte sans base de données par défaut.
Si le rapport d'erreurs mysqli est activé (MYSQLI_REPORT_ERROR
) et que l'opération demandée échoue,
un avertissement est généré. Si, en plus, le mode est défini sur MYSQLI_REPORT_STRICT
,
une mysqli_sql_exception est lancée à la place.
Exemple #1 Réinitialisation de la session de connexion
Style orienté objet
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
$mysqli->query("SET @a:=1");
$mysqli->change_user("my_user", "my_password", "world");
$result = $mysqli->query("SELECT DATABASE()");
$row = $result->fetch_row();
printf("Base de données par défaut : %s\n", $row[0]);
$result = $mysqli->query("SELECT @a");
$row = $result->fetch_row();
if ($row[0] === NULL) {
printf("La valeur de la variable a est NULL\n");
}
?>
Style procédural
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
mysqli_query($link, "SET @a:=1");
$result = mysqli_query($link, "SELECT DATABASE()");
$row = mysqli_fetch_row($result);
printf("Base de données par défaut : %s\n", $row[0]);
$result = $mysqli_query($link, "SELECT @a")) {
$row = mysqli_fetch_row($result);
if ($row[0] === NULL) {
printf("La valeur de la variable a est NULL\n");
}
?>
Les exemples ci-dessus vont afficher :
Base de données par défaut : world La valeur de la variable a est NULL
Exemple #2 Si database
est null
la connexion est ouverte sans sélectionner de base de données par défaut
Style orienté objet
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
$mysqli->change_user("my_user", "my_password", null);
$result = $mysqli->query("SELECT DATABASE()");
$row = $result->fetch_row();
printf("Base de données par défaut : %s\n", $row[0]);
Les exemples ci-dessus vont afficher :
Base de données par défaut :
Note:
L'utilisation de cette commande implique toujours que la connexion soit considérée comme neuve, que la fonction réussisse ou non. Un appel à cette fonction annulera donc toutes les transactions actives, fermera les tables temporaires et déverrouillera les tables verrouillées.