【PHP日記】

自分の知識不足を悟った末、なるべく1日一回、Webに関する知識を書いていくだけのブログ。

PHP雑学⑦ 【23日目】

PHPを学び始めた素人目線での、大事だったり大事じゃなかったりする雑知識メモ、その⑦です。


MySQLの『grant』コマンドを詳しくみていく

GRANT文SQLでユーザーに指定した権限を付与するコマンドですが、その中身について詳しくみていきます。

ターミナルでMySQLにログイン後、以下のコマンドを打ち込みます。

grant all privileges on hoge_db.*to hoge_user@'localhost' identified by 'hoge_pass' with grant option;


GRANT ALL PRIVILEGES ON hoge_db.*

hoge_db』データベースに対しての全ての権限(SELECT, INSERT, UPDATE, DELETE等)を付与しています。『*』はデータベース内の全てのテーブルの意味です。


TO hoge_user@'localhost'

hoge_user』というユーザー名に権限を付与(未定義なら新規に作成)します。@'localhost'はこのユーザーがローカルホスト(MySQLサーバーが稼働しているマシン)から接続することを表します。


IDENTIFIED BY 'hoge_pass'

hoge_user』のパスワードをhoge_passに設定します。


WITH GRANT OPTION

このオプションを付けることで『hoge_user』は他のユーザーにも権限を付与することができます。ただし付与できるのはそのユーザーが許可されている権限までです。


MySQL 5.7以降についての補足

MySQL5.7までは、GRANTコマンドで未定義のユーザーを指定すると『ユーザーの作成』から『権限の付与』まで同時に行うことが出来ていましたが、MySQL 5.7以降では、まずCREATE USERを使ってユーザーを作成し、その後にGRANTを使って権限を付与する必要があります。



『$_POST』で同じname属性を参照するには

チェックボックスなどで、同じ name 属性を持つ複数の値が送信される場合、その name 属性に角括弧『[]』を付けることで配列として扱うことができます。

これにより、チェックされたそれぞれの値が配列として受け取れるようになります。

<form action="" method="post">
    <input type="checkbox" name="interests[]" value="スポーツ">スポーツ<br>
    <input type="checkbox" name="interests[]" value="音楽">音楽<br>
    <input type="checkbox" name="interests[]" value="旅行">旅行<br>
    <input type="submit" value="送信">
</form>

このフォームで複数のチェックボックスが選択された場合、PHP側では以下のようにして各値を取得できます。

if (isset($_POST['interests'])) {
    $interests = $_POST['interests'];
    foreach ($interests as $interest) {
        echo $interest . '<br>';
    }
}

また $_POST['interests'] の中の値の順番は、HTML フォーム内で定義されたチェックボックスの順序に従います。

つまり、フォーム上で最初に定義された項目が配列の0番目に格納され、次に定義された項目が1番目に格納される、という具合になります。



以上です。