【データを保存しよう】PHPでデータベースにテーブルを作成する方法

PHP PHP

今回はhtmlからデータベースに対して、テーブルを作成してみようと思います。
XAMPPをインストールした場合、データベース(MySQL)もインストールされていますので、もしXAMPPをインストールしていない場合は、こちらの記事も参考にしてみてください。

【準備】データベースを作る

XAMPPを起動して、ApacheとMySQLをStartします。

ApacheとMySQL起動

次に、MySQLのAdminをクリックして、phpMyAdminを起動します。

phpMyAdmin表示

下記画像①の新規作成をクリック、②のtestを入力、③の作成をクリックします。

以上で、データベースを作成できました。

データベースにテーブルを作成する。

ここから本題である、データベースに対してテーブルを作るプログラムを作ります。
まずはサンプルコード。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>データベース接続</title>
</head>
<body>
    <form name="myForm" method="post" action="study_database_edit.html">
        <select id="code_selection" name="code">
            <option value="1">テーブル作成</option>
            <option value="2">テーブル一覧</option>
            <option value="3">テーブル削除</option>
        </select>
        <p><label>テーブル名</label><input type="text" name="name" placeholder="hogehoge" pattern="^[0-9A-Za-z]+$"></p>
        <p><input type="submit" value="実行"></p>
    </form>
    <?php
        try{
            if(isset($_POST['code'])==true){//処理コードがあるか
                
                switch($_POST['code']){//処理コード別に処理
                    case 1:            //データベースにテーブルを作成する処理
                        if(isset($_POST['name'])==true){
                            //データベースにアクセス
                            $dsn = 'mysql:dbname=test;host=localhost;charset=utf8';
                            $user = 'root';
                            $password ='';
                            $dbh = new PDO($dsn,$user,$password);
                            $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
                            
                            //データベースに対して実行するSQL文を作成
                            $sql = 'CREATE TABLE IF NOT EXISTS '.$_POST['name'].' (id INT(11) NOT NULL auto_increment PRIMARY KEY,hogehoge TEXT) DEFAULT CHARSET="utf8"';
                            
                            //SQL文を実行
                            $result = $dbh->query($sql);
                        }
                        break;
                }
            }
        }
        catch (Exception $e){//処理でエラーが発生した時はこちらを実行する
            print $e->getMessage();
        }
    ?>
</body>
</html>

上記ファイルをC:\xampp\htdocs\testに保存しましょう。
そして、アクセスします。(ブラウザのURL欄にhttp://localhost/test/study_database_edit.htmlを入力。)

これで、データベースにテーブルを作成するプログラムが完成しました。

要点解説

17行目から44行目がphpの処理です。

実行をクリックすると19行目の$_POST[‘code’]にデータが入りますので、isset関数がtrueを返します。

21行目のswitchは、セレクトボックスで選んだ処理で分岐します。
今回はcase 1:のデータベースにテーブルを作成する処理しかありません。
(後で改造する予定。

23行目は、テーブル名が入力されているかのチェックです。

あとは、データベースを使用する準備、SQL文作成(下記画像参考)、実行です。

25行~27行目のパスワードなどは、本来はここに書くべきではありませんが、1ファイルにまとめたかったのでやむをえず。。。

SQL文説明

iclusta+の場合は、$dsnにポート番号が必要です。これは当時、かなりはまりました。
例:$dsn = ‘mysql:dbname=test;host=localhost;port=12345;charset=utf8’;

テーブル名を入力して実行を押した後、テーブルができたかphpMyAdminを確認しましょう。

テーブル確認

無事にテーブルを作成できました。
左側のaaaをクリックすると、テーブルの詳細が見れます。

テーブル確認_クリック

以上、phpからデータベースにテーブルを作成する方法でした。