(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

第二の「型」
文字列のデータ型は可変長/固定長に注意

表2●MySQLで扱う主な整数型と文字列型
図4●プレゼント・テーブルのマスター・メンテナンス処理に使うPHPスクリプトの構成。登録,修正,削除など機能に応じてスクリプトを分割している

 今度は,パターンとしての型ではなく,データの“種類”を表すフィールドの「型」,いわゆるデータ型について説明しましょう。

 MySQLでよく使うデータ型には,表2[拡大表示]のようなものがあります。整数型(~int)といっても,tinyint,smallint,intと有効範囲に応じていろいろありますね。通常,整数型は何も指定しないと「負の整数~正の整数」を表しますが,後ろにunsignedを指定すると0または正の整数のみが対象になり,より大きい値を扱えるようになります。

 文字列型で最も頻繁に使う型は,char型とvarchar型です。char型は固定長文字列,varchar型は可変長文字列を表します。固定長文字列は,アタッシュケースのように中に入れる物のサイズに関係なく同じ大きさの記憶領域を確保します。それに対し,varchar型は日本人の知恵,風呂敷です。最大の大きさは決まっていますが,小さいものを入れれば,入れ物ごと小さくできます。

 例えば,「英字が8文字入ります」と決まっているようなケースでは,char型を使ってchar(8)などとすればいいでしょう。このとき,仮に3文字しか入力しなくても,8文字(バイト)分の領域を使います。一方,風呂敷型(そんな名前の型はありませんので念のため)のvarcharは,「普通は20バイトぐらいしか入力しないけれど,まれに50バイトとか80バイトとか入力する可能性もあるんだ」という場合に使い,実際のデータの記録に必要なバイト数しか使用しません*8

 もう一度,表1のテーブル構造を見てください。例えば,都道府県テーブルのprefnameフィールドは,都道府県名によって文字列の大きさが変わるのでvarchar(20)としていますね。これは最大20バイトまでの文字を格納可能という意味です。このように,文字列だからといって漫然とcharを使わず,「データの大きさが変わりそうな場合は可変長を使う」のが,二つ目の「型」です。

第三の「型」
後で修正しやすいようにプログラムは分割しよう

 さて,データベースの準備ができたので,いよいよPHPプログラミングの本題に入っていきましょう。Webアンケート・システムといっても,アンケート入力をはじめいろんな機能がありますが,最初に基本中の基本であるマスター・メンテナンス画面(マスターとなるテーブルの値を修正する画面)を作ります。といってもすべてのテーブルのマスター・メンテナンス画面を紹介することはできないので,プレゼントの情報を扱っているプレゼント・テーブルをメンテナンスする処理について解説します。

 ここで紹介する三番目の「型」は,図4[拡大表示]のように「プログラムはシンプルに分割しよう」ということです。つまり,プレゼント・テーブルの内容を一覧するスクリプト(present.php),登録フォーム用のスクリプト(presin.php)などとプログラムを分割し,実際にテーブルにデータを登録/修正/削除する処理は,presinsub.phpなどファイル名にsubを付けたプログラムにさらに分割しようというわけです。「でも,修正処理のpresupd.phpには該当するpresupdsub.phpがないんですけど」――はい。登録と修正では内部処理を共通化できるので,図4のようにpresin.phpを呼び出すようにしています。



金宏和實(かねひろ・かずみ)氏

株式会社イーザー代表取締役副社長。
富山県高岡市在住。