(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á.
mysqlSolo estilo procedimental: Un objeto mysqli devuelto por mysqli_connect() o mysqli_init()
usernameEl 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.