PHP
MySQL
Apache
xampp
mariadb

XAMPPのPHPからMariaDB(MySQL)を操作する

この記事は、「【連載】初めてのWindows用Laravel 5.7開発環境構築入門」の孫記事です。環境などの条件は、親記事をご覧ください。
この記事は、「XAMPPでPHP+MariaDB(MySQL互換)環境を構築する 2018年12月版」の子記事です。
XAMPPではMariaDBがMySQLと表示されているため、記事タイトルでは併記しています。


 今回はXAMPP上で動作するPHPのプログラムからMariaDBを操作するところまで進めます。

 テストアプリでは、mycatsというテーブルを作り、その中に登録した猫の名前をWebサイトの画面に表示することにします。

MariaDBにデータベースを追加する

HeidiSQLを開いて、localhostに接続します。

image.png

Localhostを右クリックし、新規作成→データベースを指定します。
image.png

今回はテスト用データベースの名前をphptestにします。
名前にphptestと入力し、照合(文字エンコーディング)にutf8mb4_unicode_ciを選択します。utf8mb4_unicode_ciは日本語だけでなく多言語を取り扱うために利用されるもので、Laravel 5.7のデフォルトエンコーディングです。

image.png

最後にOKでデータベースが作成されます。
image.png

image.png

テーブルを追加する

phptestデータベースを開いた状態で、右ペインの空白部分を右クリックし、新規作成→テーブルと進みます。
image.png

今回作成したいテーブル名「mycats」を入れて、次にカラムを追加するために追加ボタンを押します。
image.png

最初のカラムはIDにします。IDはプライマリキーにします。
追加されたカラムの名前をidとして、NULLを許可のチェックを外します。
image.png

idカラムをプライマリキーにするため、idカラムを右クリックし、新しいインデックスの作成→PRIMARYと進みます。
image.png

これにより、インデックスタブ内に、PRIMARY KEYとしてidが登録されます。
また、idカラムの一番左にはプライマリキーアイコンが付きます。
image.png

次に猫の名前を入れるnameカラムを作成します。追加ボタンを押し、カラムの名前をnameとし、データ型にVARCHARを選択して、デフォルト値を「Unknown」とします。
image.png

できたら保存します。
image.png

これでphptestデータベースにmycatsテーブルが作成されました。
image.png

テーブルに猫を登録する

作ったテーブルmycatsを選択し、データタブを開いて、「テーブルに行を挿入」ボタン(+ボタン)を押します。
image.png

最初の猫の情報として、idに1、nameにDidiと入れます。
image.png

最後にポストボタン(✓ボタン)を押して確定します。
image.png

同様に、2匹めの猫の情報としてidに2、nameにFediと入れます。
image.png

終わったら、HeidiSQLは閉じてOKです。

PHP側でMariaDBの猫テーブルを読むコードを作成する

Visual Studio Codeでinfo.phpを開きます。
image.png

以下のように書き換えます。

info.php
<?php 
echo "Hello world";
$test = 123;
echo "$test points get!";

$mysqli = new mysqli('localhost', 'phpuser', 'php', 'phptest');
if($mysqli->connect_error){
    echo $mysqli->connect_error;
    exit();
} else {
    $mysqli->set_charset("utf8mb4");
}

$sql = "SELECT id, name FROM mycats";
if ($result = $mysqli->query($sql)){
    while ($row = $result->fetch_assoc()){
        echo $row["id"] . " : " . $row["name"] . "<br>";
    }
    $result->close();
}
$mysqli->close();

phpinfo();

ポイントだけ見ていきます。

$mysqli = new mysqli('localhost', 'phpuser', 'php', 'phptest');

ここではMariaDBに接続しています。
第1パラメーターはローカルホストのMariaDBに接続することを指定しています。
第2パラメータと第3パラメータは、MariaDBにアクセスするユーザーIDとパスワードです。
第4パラメータは接続先データベース名なので、猫テーブルを設置したphptestを指定しています。

    $mysqli->set_charset("utf8mb4");

接続が成功したら、文字エンコードをutf8mb4にするよう指定しています。これをやらないとうまく通信できないことがあります。

$sql = "SELECT id, name FROM mycats";

猫を読み出すSELECT文を書いて、あとは実行して、取得できたレコードすべてを画面に表示しています。

結果は以下のように表示されます。

image.png

改行などを気にせず出したので1匹目が前の行の続きになってしまっていますが、まあOKとしましょう。笑
とにかく、PHPからMariaDBにアクセスして動作するプログラムを実行することができました。