(PHP 5, PHP 7, PHP 8)
mysqli::change_user -- mysqli_change_user — Ändert den Benutzer der angegebenen Datenbankverbindung
Objektorientierter Stil
Prozeduraler Stil
Ändert den Benutzer der angegebenen Datenbankverbindung und legt die aktuelle Datenbank fest.
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
Die Datenbank, zu der gewechselt werden soll
Falls gewünscht, kann der Wert null
übergeben werden, was dazu führt,
dass nur der Benutzer gewechselt und keine Datenbank ausgewählt wird.
Um in diesem Fall eine Datenbank auszuwählen, muss die Funktion
mysqli_select_db() verwendet werden.
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
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 mysqli::change_user()-Beispiel
Objektorientierter Stil
<?php
/* Verbindung zur Datenbank test aufbauen */
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");
/* Verbindung überprüfen */
if (mysqli_connect_errno()) {
printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
exit();
}
/* Variable a setzen */
$mysqli->query("SET @a:=1");
/* alles zurücksetzen und eine neue Datenbank auswählen */
$mysqli->change_user("my_user", "my_password", "world");
if ($result = $mysqli->query("SELECT DATABASE()")) {
$row = $result->fetch_row();
printf("Standard-Datenbank: %s\n", $row[0]);
$result->close();
}
if ($result = $mysqli->query("SELECT @a")) {
$row = $result->fetch_row();
if ($row[0] === NULL) {
printf("Der Wert der Variable a ist NULL\n");
}
$result->close();
}
/* Verbindung schließen */
$mysqli->close();
?>
Prozeduraler Stil
<?php
/* Verbindung zur Datenbank test aufbauen */
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
/* Verbindung überprüfen */
if (!$link) {
printf("Verbindung fehlgeschlagen: %s\n", mysqli_connect_error());
exit();
}
/* Variable a setzen */
mysqli_query($link, "SET @a:=1");
/* alles zurücksetzen und eine neue Datenbank auswählen */
mysqli_change_user($link, "my_user", "my_password", "world");
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
$row = mysqli_fetch_row($result);
printf("Standard-Datenbank: %s\n", $row[0]);
mysqli_free_result($result);
}
if ($result = mysqli_query($link, "SELECT @a")) {
$row = mysqli_fetch_row($result);
if ($row[0] === NULL) {
printf("Der Wert der Variable a ist NULL\n");
}
mysqli_free_result($result);
}
/* Verbindung schließen */
mysqli_close($link);
?>
Die obigen Bespiele erzeugen folgende Ausgabe:
Standard-Datenbank: world Der Wert der Variable a ist NULL
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.