(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 por procedimientos
$mysql
,$username
,$password
,$database
Intenta 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á.
link
Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
username
El nombre de usuario MySQL.
password
La 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.
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.
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 por procedimientos
<?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");
}
?>
El resultado de los ejemplos sería:
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]);
El resultado de los ejemplos sería:
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.