PHPではMySQLにアクセスするための関数(頭がmysql_で始まる関数)が用意されていますが、
今回紹介するプログラムのようにODBC関数(頭がodbc_で始まる関数)を使いMySQLにアクセスすることもできます。
事前の設定
MySQLで定義されている表一覧を出力するプログラム(myodbc1.php)を作成します。1. このシリーズのサンプルプログラムで使用するテーブルtab1は
サーバー名 --- localhost
データベース名 --- workdb
パスワード --- karipass
で設定されていることを前提として 解説しますのでXAMPPインストール後におこなうMySQLの設定を参考に
事前にテーブルtab1を作成しておいてください。
2. 当記事で紹介するPHPプログラムは「C:\xampp\htdocs\test」に格納しますので、
事前に「C:\xampp\htdocs」フォルダ内に「test」フォルダを作成しておいてください。
3.サンプルプログラム実行前に MyODBC 3.5のインストールとデータソース の記事を参照して
システムDSNを「myodbc351s」という名称で作成しておいてください。
*注 --- MySQLのテーブル名、列名、列の内容等の日本語表示を正しくおこなうため
MyODBCはMyODBC5.1ではなくMyODBC3.5の方を使用しています。
仕様
MySQLで定義されている表一覧を出力し、表の構造と内容を表示する1. MySQLで定義されている表一覧を出力するプログラム(myodbc1.php)を作成
下記の内容をテキストエディタにコピーし、ファイル名を「myodbc1.php」として「C:\xampp\htdocs\test」内に保存します。
*注意 ---「myodbc1.php」ファイルの文字コードは「SJIS」を指定して保存してください。
PHPエディタや サクラエディタなど文字コードを指定できるエディタを使うと便利です。
<?php //odbc_connect関数によりDBへ接続開始する //システムDSN名,ユーザー名,パスワードの順に指定する $dbHandle = odbc_connect("myodbc351s","root","karipass"); //DBの接続に失敗した場合はエラー表示をおこない処理を中断する if ($dbHandle == False) { print ("can not connect db\n"); exit; } //odbc_tables関数によりテーブルタイプが"TABLE"のもののテーブル情報を得る $rs = odbc_tables($dbHandle,"","%","%","TABLE"); //odbc_num_fields関数により列数を取得する $num = odbc_num_fields($rs); //HTML文を出力 テーブルの開始を指定 print("<table border=1><tr"); //HTML文を出力 テーブルの行開始 print("<tr>"); //test表の列数と同じ回数を繰り返す for ($i=1;$i<=$num;$i++){ //HTML文を出力 列名を <td>で囲んで出力 print("<td>".odbc_field_name($rs,$i)."</td>"); } //HTML文を出力 テーブルの行終了 print("</tr>"); //odbc_fetch_row関数によりテーブル情報を1行ずつ取得して編集後、出力する while (odbc_fetch_row($rs)) { for($i = 1; $i <= $num; $i++) { if ($i == 1) { print("<tr>"); } //odbc_result関数により結果データをフィールドごとに取り出す //テーブル名は[定義][内容]へのリンク付で出力し、選択されたテーブル名はGETで渡す if ($i == 3) { print( "<td>".odbc_result($rs, $i)."<a href='myodbc1-1.php?table=".odbc_result($rs, $i)."'>" ." [定義] ". "</a><a href='myodbc1-2.php?table=".odbc_result($rs, $i)."'>" ." [内容] ". "</a></td>"); } else { print("<td>" . odbc_result($rs, $i) . "</td>"); } if ($i == $num) { print("</tr>"); } } } //HTML文を出力 テーブルの終了を指定する print("</table>"); //odbc_free_result関数により結果保持用のメモリを開放する odbc_free_result($rs); //odbc_close関数によりDBへの接続を切断する odbc_close($dbHandle); ?>続いて、次ページで「myodbc1-1.php」を作成します。