PHP 8.4.1 Released!

mysqli::change_user

mysqli_change_user

(PHP 5, PHP 7, PHP 8)

mysqli::change_user -- mysqli_change_userИзменяет пользователя соединения с базой данных

Описание

Объектно-ориентированный стиль

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

Процедурный стиль

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

Метод совершает попытку подключения к базе данных с заданными учётными данными.

В отличие от метода mysqli::connect() этот метод не отключит текущее соединение, если не получится открыть новое подключение.

Для успешной смены пользователя необходимы корректные параметры username и password, а также наличие достаточных прав для работы с базой. Если смена пользователя закончится ошибкой, сохранится текущая авторизация пользователя, до вызова функции.

Список параметров

mysql

Только для процедурного стиля: объект mysqli, который вернула функция mysqli_connect() или функция mysqli_init().

username

Имя пользователя для доступа к MySQL.

password

Пароль для доступа к MySQL.

database

Название базы данных. Соединение с сервером откроется без базы данных по умолчанию, если передали значение null или пустую строку.

Возвращаемые значения

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Ошибки

Если уведомления об ошибках mysqli включены (MYSQLI_REPORT_ERROR) и запрошенная операция не удалась, выдаётся предупреждение. Если, кроме того, установлен режим MYSQLI_REPORT_STRICT, вместо этого будет выброшено исключение mysqli_sql_exception.

Примеры

Пример #1 Пример сброса сеанса подключения

Объектно-ориентированный стиль

<?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("Default database: %s\n", $row[0]);

$result = $mysqli->query("SELECT @a");
$row = $result->fetch_row();

if (
$row[0] === null) {
printf("Value of variable a is NULL\n");
}

?>

Процедурный стиль

<?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("Default database: %s\n", $row[0]);

$result = $mysqli->query("SELECT @a");
$row = $result->fetch_row();
if (
$row[0] === null) {
printf("Value of variable a is NULL\n");
}

?>

Результат выполнения приведённых примеров:

База данных по умолчанию: world
Значение переменной — NULL

Пример #2 Пример соединения без выбора базы данных по умолчанию при передаче в параметр database значения null

Объектно-ориентированный стиль

<?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("Default database: %s\n", $row[0]);

Результат выполнения приведённых примеров:

Default database:

Примечания

Замечание:

В результате вызова функции текущее соединение с базой данных начинает вести себя так, как будто создали новое соединение. Взов функции откатыает активные транзакции, закрывает временные таблицы и разблокирует таблицы, которые заблокировали прежде независимо от результата операции.

Смотрите также

  • mysqli_connect() - Псевдоним mysqli::__construct
  • mysqli_select_db() - Устанавливает базу данных для выполняемых запросов

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top