PHP 8.3.4 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, string $password, ?string $database): bool

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

mysqli_change_user(
    mysqli $mysql,
    string $username,
    string $password,
    ?string $database
): bool

Меняет пользователя, от имени которого выполнено подключение к базе данных, и устанавливает текущую базу данных

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

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

mysql

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

username

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

password

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

database

Имя базы данных

Если требуется сменить пользователя без выбора базы данных, следует указывать null. Для выбора базы данных, необходимо использовать функцию mysqli_select_db().

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

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

Ошибки

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

Примеры

Пример #1 Пример использования mysqli::change_user()

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

<?php

/* создаём подключение к базе данных test */
$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

/* проверяем соединение */
if (mysqli_connect_errno()) {
printf("Подключение не удалось: %s\n", mysqli_connect_error());
exit();
}

/* устанавливаем переменную a */
$mysqli->query("SET @a:=1");

/* все сбрасываем и выбираем новую базу данных */
$mysqli->change_user("my_user", "my_password", "world");

if (
$result = $mysqli->query("SELECT DATABASE()")) {
$row = $result->fetch_row();
printf("База данных по умолчанию: %s\n", $row[0]);
$result->close();
}

if (
$result = $mysqli->query("SELECT @a")) {
$row = $result->fetch_row();
if (
$row[0] === NULL) {
printf("Значение переменной - NULL\n");
}
$result->close();
}

/* закрываем соединение */
$mysqli->close();
?>

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

<?php
/* создаём подключение к базе данных test */
$link = mysqli_connect("localhost", "my_user", "my_password", "test");

/* проверяем соединение */
if (!$link) {
printf("Подключение не удалось: %s\n", mysqli_connect_error());
exit();
}

/* устанавливаем переменную a */
mysqli_query($link, "SET @a:=1");

/* все сбрасываем и выбираем новую базу данных */
mysqli_change_user($link, "my_user", "my_password", "world");

if (
$result = mysqli_query($link, "SELECT DATABASE()")) {
$row = mysqli_fetch_row($result);
printf("База данных по умолчанию: %s\n", $row[0]);
mysqli_free_result($result);
}

if (
$result = mysqli_query($link, "SELECT @a")) {
$row = mysqli_fetch_row($result);
if (
$row[0] === NULL) {
printf("Значение переменной - NULL\n");
}
mysqli_free_result($result);
}

/* закрываем соединение */
mysqli_close($link);
?>

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

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

Примечания

Замечание:

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

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

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

add a note

User Contributed Notes

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