MyODBCを使用してMySQLで定義されている表一覧を出力し、表の構造と内容を表示するプログラムを紹介します。
PHPではMySQLにアクセスするための関数(頭がmysql_で始まる関数)が用意されていますが、
今回紹介するプログラムのようにODBC関数(頭がodbc_で始まる関数)を使いMySQLにアクセスすることもできます。

事前の設定

MySQLで定義されている表一覧を出力するプログラム(myodbc1.php)を作成します。

1. このシリーズのサンプルプログラムで使用するテーブルtab1は

サーバー名 --- localhost
データベース名 --- workdb
パスワード --- karipass

で設定されていることを前提として 解説しますのでXAMPPインストール後におこなうMySQLの設定を参考に
事前にテーブルtab1を作成しておいてください。

2. 当記事で紹介するPHPプログラムは「C:xampphtdocs est」に格納しますので、
事前に「C:xampphtdocs」フォルダ内に「test」フォルダを作成しておいてください。

3.サンプルプログラム実行前に MyODBC 3.5のインストールとデータソース の記事を参照して
システムDSNを「myodbc351s」という名称で作成しておいてください。

*注 --- MySQLのテーブル名、列名、列の内容等の日本語表示を正しくおこなうため
MyODBCはMyODBC5.1ではなくMyODBC3.5の方を使用しています。

仕様

MySQLで定義されている表一覧を出力し、表の構造と内容を表示する

1. MySQLで定義されている表一覧を出力するプログラム(myodbc1.php)を作成

下記の内容をテキストエディタにコピーし、ファイル名を「myodbc1.php」として
「C:xampphtdocs est」内に保存します。

*注意 ---「myodbc1.php」ファイルの文字コードは「SJIS」を指定して保存してください。
PHPエディタサクラエディタなど文字コードを指定できるエディタを使うと便利です。
<?php
//odbc_connect関数によりDBへ接続開始する
//システムDSN名,ユーザー名,パスワードの順に指定する
$dbHandle = odbc_connect("myodbc351s","root","karipass");

//DBの接続に失敗した場合はエラー表示をおこない処理を中断する
if ($dbHandle == False) {
	print ("can not connect db
");	
	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」を作成します。