PHP 8.4.2 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