mysqli::change_user

mysqli_change_user

(PHP 5, PHP 7, PHP 8)

mysqli::change_user -- mysqli_change_user指定されたデータベース接続のユーザー名を変更する

説明

オブジェクト指向型

publicmysqli::change_user(string$username, string$password, ?string$database): bool

手続き型

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

指定されたデータベース接続のユーザー名を変更し、 現在のデータベースを設定します。

ユーザーを正しく変更するには、usernamepassword 引数を正しく渡す必要があります。 またそのユーザーが対象のデータベースに対する適切なパーミッションを 持っている必要があります。どんな理由であれ、認証に失敗するとカレントユーザーの 認証が継続されます。

パラメータ

link

手続き型のみ: 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("Connect failed: %s\n", mysqli_connect_error());
exit();
}


$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("Connect failed: %s\n", mysqli_connect_error());
exit();
}


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);
?>

上の例の出力は以下となります。

デフォルトデータベース: world 変数 a の値は NULL

注意

注意:

このコマンドを使用すると、常に、カレントのデータベース接続は あたかも完全に新しいデータベース接続であるかのようになります。 これにより、全てのアクティブなトランザクションはロールバックされ、 一時テーブルは全てクローズされ、ロックされたテーブルはすべて 開放されます。

参考

To Top