How to use
Chapter4. phpMyAdminによるテーブル作成
HTMLフォームに入力されたデータはデータベースに保存し必要に応じて出力します。
本章では、phpMyAdminを使用したMySQLデータベースの操作方法とデータテーブルの定義方法を解説しています。
HTMLフォームに入力されたデータはデータベースに保存し必要に応じて出力します。
本章では、phpMyAdminを使用したMySQLデータベースの操作方法とデータテーブルの定義方法を解説しています。
phpMyAdminは、XServerにインストールされているMySQLデータベースの管理ツールです。
XServerのサーバーパネルにアクセスし、データベース欄にある phpmyadmin(バージョン) をクリックします。
バージョンは、サーバー契約とセットアップ手順を実行した時期により異なりますので、「MySQL設定」で確認してください。
phpMyAdminのアクセスにはBasic認証が必要です。 サーバー契約とセットアップ手順で設定したMySQLユーザー名とパスワードを入力してください。
画面左のテーブルリスト上部にある「New」をクリックします。
テーブルリストにあらかじめ作成されているテーブルは、LIB PHP Frameworkの動作に必要なものですので変更しないようにしてください。
LIB PHP Frameworkが使用するテーブルはリファレンスに記載されています。
データの種類 | データ型 | 長さ | 命名規則 |
ID | INT | 11 | 大文字 例)CID UID QID |
オートインクリメントID | INT | 11 | ROWID |
短い文字列 | VARCHAR | 20 | 小文字 |
長い文字列 | VARCHAR | 200 | 小文字 |
全角100文字以上の文章 | TEXT | 小文字 | |
カンマ区切りのCSVデータ | TEXT | サフィックス(_csv) | |
牽引用のハッシュタグデータ | TEXT | サフィックス(_tag) | |
日時 | DATETIME | プレフィックス(tm_) | |
数値 | INT | 11 | プレフィックス(n_) |
小さい数値 | SMALLINT | 6 | プレフィックス(n_) |
大きい数値 | BIGINT | 20 | プレフィックス(n_) |
ON・OFFを表すフラグ | TINYINT | 1 | プレフィックス(is_)(has_)(allow_) |
並び順を表す数値 | INT | 11 | n_index |
ストレージエンジンとは、データを読み書きするためのプログラムの種類です。
MySQLではテーブルごとにエンジンを指定できますが、主に下記の2種類を使用します。
シーケンステーブルは、採番用のテーブルです。
上述のように、テーブル定義にはCIDやUIDのようなIDカラムをプライマリーキーにしますが、この値は採番テーブルから発行します。
右図のように、「ID」カラムのみからなるテーブルを定義します。
「ID」カラムはプライマリーキーに設定し、テーブル名にはサフィックス「_seq」を付加します。
ここでは、「t_customer」用の採番テーブルですので「t_customer_seq」としています。
シーケンステーブルには、あらかじめ1行のデータが必要です。
右図のように、値に「0」を指定して実行します。
これでID発行用に、1行1列のテーブルを準備できました。
実際の処理フローでは以下のようにして、IDの発行とデータの挿入を行います。
下記コードは、Ajaxにてフォームデータを送信し、POSTイベントでデータ操作を行っています。
$dac = new DAC(Lib::connection(), "mysql");
try {
$dac->open();
$CID = $dac->setSequence("t_customer_seq");
$dac->setData("CID", $CID);
$dac->setData("name", $_POST["name"]);
$dac->setData("tel", $_POST["tel"]);
$dac->insert("t_customer");
$this->response("データを挿入しました。", true);
} catch (Exception $ex) {
$this->response($ex->getMessage(), false);
}
上述のように、アプリ内で一意な値である必要がある場合には、シーケンステーブルを定義しIDを発行しますが、
操作ログや、重要性の低い管理データなどでは、自動連番を使用します。
テーブル定義画面で「A_I」をチェックすると、データの挿入時に自動的に連番が発行されます。
$dac = new DAC(Lib::connection(), "mysql");
try {
$dac->open();
$dac->setData("ip_address", $_POST["ip_address"]);
$dac->setData("tm_action", date("Y-m-d H:i:s"));
$dac->insert("t_log");
$ROWID = $dac->getSequence();
$this->response("ROWIDは{$ROWID}です。", false);
} catch (Exception $ex) {
$this->response($ex->getMessage(), false);
}