428466 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

Shintakの覚え書き

Shintakの覚え書き

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使えるのかなぁ。


© Rakuten Group, Inc.