(PHP 5, PHP 7, PHP 8)
mysqli::change_user -- mysqli_change_user — Cambia el usuario de la conexión
Estilo orientado a objetos
$username, #[\SensitiveParameter] string $password, ?string $database): boolEstilo procedimental
$mysql,$username,$password,$databaseIntenta conectarse a la base de datos especificada utilizando las credenciales proporcionadas.
A diferencia de mysqli::connect(), este método no desconectará la conexión actual si la nueva conexión no puede establecerse.
Para que esta función tenga éxito, los parámetros
username y password deben
ser válidos y el usuario en cuestión debe tener los permisos
de acceso a la base de datos deseada.
Si por alguna razón la autorización falla, el usuario
actual se conservará.
mysqlusernameEl nombre de usuario MySQL.
passwordLa contraseña MySQL.
database
El nombre de la base de datos. Si es null o una cadena vacía,
la conexión al servidor se abrirá sin una base de datos por defecto.
Si el informe de errores de mysqli está habilitado (MYSQLI_REPORT_ERROR) y la operación solicitada falla,
se genera una advertencia. Si, además, el modo está configurado como MYSQLI_REPORT_STRICT,
se lanza una mysqli_sql_exception en su lugar.
Ejemplo #1 Reinicio de la sesión de conexión
Estilo orientado a objetos
<?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 datos por defecto: %s\n", $row[0]);
$result = $mysqli->query("SELECT @a");
$row = $result->fetch_row();
if ($row[0] === NULL) {
printf("El valor de la variable a es NULL\n");
}
?>Estilo procedimental
<?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 datos por defecto: %s\n", $row[0]);
$result = mysqli_query($link, "SELECT @a");
$row = mysqli_fetch_row($result);
if ($row[0] === NULL) {
printf("El valor de la variable a es NULL\n");
}
?>Los ejemplos anteriores mostrarán:
Base de datos por defecto: world El valor de la variable a es NULL
Ejemplo #2 Si database es null la conexión se abre sin seleccionar una base de datos por defecto
Estilo orientado a objetos
<?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 datos por defecto: %s\n", $row[0]);Los ejemplos anteriores mostrarán:
Base de datos por defecto:
Nota:
El uso de este comando implica siempre que la conexión sea considerada como nueva, independientemente de si la función tiene éxito o no. Una llamada a esta función anulará por lo tanto todas las transacciones activas, cerrará las tablas temporales y desbloqueará las tablas bloqueadas.