(PHP 5, PHP 7, PHP 8)
mysqli::change_user -- mysqli_change_user — Ändert den Benutzer der Datenbankverbindung
Objektorientierter Stil
$username
, #[\SensitiveParameter] string $password
, ?string $database
): boolProzeduraler Stil
$mysql
,$username
,$password
,$database
Versucht, mit den angegebenen Anmeldeinformationen eine Verbindung zur angegebenen Datenbank herzustellen.
Im Gegensatz zu mysqli::connect() trennt diese Methode die aktuelle Verbindung nicht, wenn die neue Verbindung nicht geöffnet werden kann.
Für einen erfolgreichen Benutzerwechsel müssen gültige Werte für die
Parameter username
und
password
angegeben werden und der Benutzer muss über
ausreichende Berechtigungen für den Zugriff auf die gewünschte Datenbank
verfügen. Wenn die Autorisierung aus irgendeinem Grund fehlschlägt, bleibt
die aktuelle Benutzerauthentifizierung unverändert.
mysql
Nur bei prozeduralem Aufruf: ein von mysqli_connect() oder mysqli_init() zurückgegebenes mysqli-Objekt.
username
Der MySQL-Benutzername
password
Das MySQL-Passwort
database
Der Name der Datenbank. Wenn null
oder eine leere Zeichenkette
übergeben wird, wird die Verbindung zum Server ohne Standard-Datenbank
geöffnet.
If mysqli error reporting is enabled (MYSQLI_REPORT_ERROR
) and the requested operation fails,
a warning is generated. If, in addition, the mode is set to MYSQLI_REPORT_STRICT
,
a mysqli_sql_exception is thrown instead.
Beispiel #1 Zurücksetzen der Verbindungs-Session
Objektorientierter Stil
<?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("Standard-Datenbank: %s\n", $row[0]);
$result = $mysqli->query("SELECT @a");
$row = $result->fetch_row();
if ($row[0] === null) {
printf("Der Wert der Variable a ist NULL\n");
}
Prozeduraler Stil
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
mysqli_query($link, "SET @a:=1");
mysqli_change_user($link, "my_user", "my_password", "world");
$result = mysqli_query($link, "SELECT DATABASE()");
$row = mysqli_fetch_row($result);
printf("Standard-Datenbank: %s\n", $row[0]);
$result = mysqli_query($link, "SELECT @a");
$row = mysqli_fetch_row($result);
if ($row[0] === null) {
printf("Der Wert der Variable a ist NULL\n");
}
Die obigen Bespiele erzeugen folgende Ausgabe:
Standard-Datenbank: world Der Wert der Variable a ist NULL
Beispiel #2 Wenn database
null
ist, wird die Verbindung ohne Auswahl einer Standard-Datenbank geöffnet
Objektorientierter Stil
<?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("Standard-Datenbank: %s\n", $row[0]);
Die obigen Bespiele erzeugen folgende Ausgabe:
Standard-Datenbank:
Hinweis:
Wenn dieser Befehl verwendet wird, verhält sich die aktuelle Datenbankverbindung immer so, als ob es sich um eine völlig neue Datenbankverbindung handelt, unabhängig davon, ob der Vorgang erfolgreich abgeschlossen wurde. Mit diesem Zurücksetzen werden auch alle aktiven Transaktionen zurückgesetzt, alle temporären Tabellen geschlossen und alle gesperrten Tabellen entsperrt.