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

更改指定数据库连接的用户并设置当前数据库。

为了成功更改用户,必须提供有效的 usernamepassword 参数,并且该用户必须具有足够的权限才能访问所需的数据库。如果由于任何原因授权失败,当前用户身份验证将保留。

参数

mysql

仅过程式风格:由 mysqli_connect()mysqli_init() 返回的 mysqli 对象。

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

/* 连接数据库测试 */
$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("变量 a 的值为 NULL\n");
}
$result->close();
}

/* 关闭连接 */
$mysqli->close();
?>

过程式风格

<?php
/* 连接数据库测试 */
$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("变量 a 的值为 NULL\n");
}
mysqli_free_result($result);
}

/* 关闭连接 */
mysqli_close($link);
?>

上面的示例将输出

Default database: world
Value of variable a is NULL

注意

注意:

使用此命令将始终导致当前数据库连接的行为就像一个全新的数据库连接一样,无论操作是否成功完成。此重置包括对任何活动事务执行回滚,关闭所有临时表以及解锁所有已锁定表。

另请参阅

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top