PHPでMDBを検索する(ADO)ちょっとヒマだったので、今度はADOで検索してみました。ODBC経由のスクリプトをマニュアル見ながらいじったら、割と簡単にできちゃいました。ODBCの設定がいらない分、ADOの方が良いかもしれません。DBをSQL ServerとかOracleに切り替える時も楽かもしれません。 それでは、ソースです。 <?php //////////////////////////////////////// // HTML雛型 //////////////////////////////////////// function HTML_Head(){ echo '<HTML>'; echo '<HEAD><TITLE>Sample</TITLE></HEAD>'; echo '<BODY>'; echo '<H1>Sample</H1>'; echo '<FORM NAME="DB_MANAGER" ACTION="sample2.php" METHOD="POST">'; echo '<TEXTAREA NAME="_SQL" COLS="80" ROWS="8">'; } function HTML_Middle(){ echo '</TEXTAREA><BR>'; echo '<INPUT TYPE=SUBMIT>'; echo '</FORM>'; echo '<HR>'; } function HTML_Foot(){ echo '<HR>'; echo 'PHP ADO Sample<BR>'; echo '</BODY>'; echo '</HTML>'; } //////////////////////////////////////// // メイン処理 //////////////////////////////////////// //データベースへの接続を開く $cn = new COM( "ADODB.Connection" ) or die("Cannot start ADO"); $ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"; $ConnectionString .= "Data Source=c:\shintak\yakuba.mdb;"; $cn->Open( $ConnectionString ); //フォームのテキストエリアで入力された文字列をデコードする //(「\」でエンコードされている) $SQL = StripSlashes($_POST['_SQL']); HTML_Head(); //タイトルとフォームのテキストエリアまでを表示 echo $SQL; //テキストエリアの値に直前のSQL文を出力 HTML_Middle(); //テキストエリアから真中の仕切り線までを表示 //フォームからのSQLが空でなければSQLを実行 if($SQL) { $rs = $cn->Execute($SQL); // Open Recordset //カラム数を得る $columns = $rs->Fields->Count(); echo '列数:'.$columns; echo '<TABLE BORDER>'; //テーブル開始 while (!$rs->EOF) { echo '<TR>'; //行開始 for ($i=0; $i < $columns; $i++) { echo '<TD>'. $rs->Fields[$i]->value. '</TD>'; } echo '</TR>'; //行終了 $rs->MoveNext(); } echo '</TABLE>'; //テーブル終了 //データベースへの接続を閉じる $rs->Close(); $cn->Close(); $rs->Release(); $cn->Release(); $rs = null; $cn = null; } HTML_Foot(); //フッタを表示 ?> ふと思ったのですが、Oracleを検索する時ってoo4o使えるのかなぁ。 |