WinBinderでMySQLを利用

(1/1)
WinBinder は、PHP のデータベース・アクセス機能を利用することもできる。そこで今回は、MySQL にアクセスするプログラムをつくってみることにする。

MySQLの準備

ここでは、Windows パソコンに MySQL がインストールされているものとして話を進めていく。まだインストールされていない方は、「MySQL で簡単データベース」をご覧いただきたい。
また、「都道府県マスタを作る」で用意したテーブルを使うので、あわせてご用意いただきたい。

サンプル・プログラム

都道府県ID(「都道府県マスタを作る」参照)を入力し、[検索]ボタンを押すことで、対応する都道府県を表示する。

プログラムをダウンロードする

サンプル・プログラムの解説:入力チェック

基本的なプログラム構造は、いままで解説してきたとおりである。ここでは、今回のプログラム固有の部分を中心に解説していく。

0018: /**
0019:  * 入力値チェックの下請け
0020:  * @param string $str チェック対象文字列
0021:  * @param int $maxlength 最小桁数;0なら最小チェックは行わない
0022:  * @param int $maxlength 最大桁数;0なら長さチェックは行わない
0023:  * @param string $pattern 文字種パターン(正規表現)
0024:  * @return int 0=正常終了 / 1=最小桁数未満 / 2=最大桁数超 / 3=文字種違反
0025: */
0026: function check_sub($str$minlength$maxlength$pattern) {
0027:     $l = mb_strlen($str);
0028: 
0029:     //最小桁数チェック
0030:     if (($maxlength > 0) && ($l < $minlength))  return 1;
0031: 
0032:     //最大桁数チェック
0033:     if (($maxlength > 0) && ($l > $maxlength))  return 2;
0034: 
0035:     //文字種のチェック
0036:     for ($i = 0; $i < $l$i++) {
0037:         $c = mb_substr($str$i, 1);
0038:         $result = preg_match($pattern$c);
0039:         if ($result == 0)   return 3;
0040:     }
0041: 
0042:     return 0;
0043: }
0044: 
0045: /**
0046:  * 入力値が整数かどうか調べる
0047:  * @param string $str チェック対象文字列
0048:  * @param int $maxlength 最小桁数;0なら最小チェックは行わない
0049:  * @param int $maxlength 最大桁数;0なら長さチェックは行わない
0050:  * @return int 0=正常終了 / 1=最小桁数未満 / 2=最大桁数超 / 3=文字種違反
0051: */
0052: function check_num($str$minlength$maxlength) {
0053:     return check_sub($str$minlength$maxlength, "/[0-9]/");
0054: }

0076:     //入力値チェック
0077:     $r = check_num($id, 1, 2);       //1桁以上2桁以下の整数
0078:     switch ($r) {
0079:         case 1:
0080:         case 2:
0081:             $result = 'error >> IDは 0 以上 99 以下にしてください';
0082:             break;
0083:         case 3:
0084:             $result = 'error >> IDは整数のみです';
0085:             break;

入力された都道府県ID をチェックする部分である。ここでは、0 以上99 以下の整数、すなわち、1 桁以上2 桁以下の数字であるかどうかをチェックしている。
space
ユーザーは、ときに想定外の操作をすることがある。ユーザー入力を求めるプログラムの定石として、このようなチェック・ルーチンを入れておこう。

サンプル・プログラムの解説:MySQLアクセス

PHP から MySQL にアクセスするためには、MySQL のホスト名、ユーザー名、パスワードの 3 つが必要である。これをグローバル変数 $Host, $User, $Password として事前に定義しておく。これは、各自の環境に合わせておくこと。

0012: //MySQL DB 接続パラメータ(各自の環境に合わせて)
0013: $Host     = "localhost"; //MySQLホスト
0014: $User     = "root";         //MySQLユーザー
0015: $Password = "root";         //MySQLパスワード

MySQL データベースに接続するユーザー関数 connect_pahoodb を用意した。
先ほどのグローバル変数 $Host, $User, $Password を参照し、関数  mysql-connect  により MySQL データベースに接続し、そのオブジェクトを返すだけの関数である。

0056: /**
0057:  * MySQL DB に接続する
0058:  * @return object DBオブジェクト
0059: */
0060: function connect_pahoodb() {
0061:     global $Host$User$Password;
0062: 
0063:     $con = @mysql_connect($Host$User$Passwordor
0064:                 die("データベース接続エラー<br />");
0065:     mysql_select_db("pahoodb", $con);
0066: 
0067:     return $con;
0068: }

前述の入力チェックで正常だったケースに限り、MySQL にアクセスする。
先ほど定義したユーザー関数 connect_pahoodb を使ってデータベース pahoodb に接続する。
次に、関数  mysql-query  により、テーブル prefectures から変数 [$id] と一致するレコードを検索する SQL 文を実行する。
関数  mysql-fetch-array  により実行結果を受け取り、実行結果が存在していたら、value カラム、すなわち都道府県名を変数 $result に代入する。

0086:         default:
0087:             $con = connect_pahoodb();
0088:             $sql = "select * from prefectures where id=$id;";
0089:             $res = mysql_query($sql$con);
0090:             if ($res == TRUE) {
0091:                 $row = mysql_fetch_array($res);
0092:                 $result = isset($row['value']) ? $row['value'] : 'error >> IDが見あたりません';
0093:             }
0094:             mysql_close($con);
0095:         }

参考サイト・書籍

(この項おわり)
header