mysqli::change_user

mysqli_change_user

(PHP 5, PHP 7, PHP 8)

mysqli::change_user -- mysqli_change_userCambia el usuario de la conexión

Descripción

Estilo orientado a objetos

public mysqli::change_user(string $username, #[\SensitiveParameter] string $password, ?string $database): bool

Estilo por procedimientos

mysqli_change_user(
    mysqli $mysql,
    string $username,
    #[\SensitiveParameter] string $password,
    ?string $database
): bool

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á.

Parámetros

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.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Errores/Excepciones

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.

Ejemplos

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:

Notas

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.

Ver también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top