1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

この記事は、「【連載】初めての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にアクセスして動作するプログラムを実行することができました。

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?