PHP Conference Nagoya 2025

mysqli::change_user

mysqli_change_user

(PHP 5, PHP 7, PHP 8)

mysqli::change_user -- mysqli_change_userChange l'utilisateur de la connexion

Description

Style orienté objet

public mysqli::change_user(string $username, #[\SensitiveParameter] string $password, ?string $database): bool

Style procédural

mysqli_change_user(
    mysqli $mysql,
    string $username,
    #[\SensitiveParameter] string $password,
    ?string $database
): bool

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é.

Liste de paramètres

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.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Erreurs / Exceptions

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.

Exemples

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 :

Notes

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.

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top