PHPからODBC経由でoracleデータベースへ接続するための記述
単純な接続方法だが、意外にハマったのでメモを残す。
1.COMを使った接続方法(ADODB)
2.odbc_connectを使った接続方法
1.COMを使った方法(ADO)
mb_language( "ja" );
mb_internal_encoding("UTF-8");
$cn = new COM( "ADODB.Connection" );
$cn->CursorLocation = 3;
$rs = new COM( "ADODB.Recordset" );
$ConnectionString = "Provider=MSDASQL;" .
"Driver={Microsoft ODBC for Oracle}" .
";SERVER=srv001" .
";UID=test" .
";PWD=test" .
";";
$cn->Open( $ConnectionString );
$query = "select * from M_STAFF";
$rs->Open( $query, $cn );
while( !$rs->EOF ) {
echo "{$ret['staffcode']}";
//ワークテーブルへインサート
$query = "update W_STAFF set staffcode = '{$ret['staffcode']}'";
$cn->Execute( $query );
$rs->MoveNext();
}
$rs->Close();
@$cn->Close();
ちなみにoracleドライバを使用するときは下記のように文字列を変更する。
$ConnectionString = "Provider=MSDASQL;" .
";Driver={Oracle in OraClient11g_home1}" .
";DBQ=test" .
";UID=test" .
";PWD=test" .
";";
接続文字列の指定方法
- Provider : OLEDBプロバイダ名
- Data Source : 接続するデータベース
- User ID : ユーザー名
- Password : パスワード
OLEDBプロバイダの指定方法
- Jet4.0 (Access2000以降) : Provider=Microsoft.Jet.OLEDB.4.0
- SQL Server : Provider=SQLOLEDB
- Oracle : Provider=MSDAORA
- ODBC 経由 : Provider=MSDASQL
ちなみに今回、上記のMicrosoftODBCforOracleの方法を試したところ、ページを表示した段階でPCがフリーズを繰り返した。
原因がわからなかったため、接続方法を下記のように変更することに。
2.odbc_connectを使った方法
$db=odbc_connect("Driver={Microsoft ODBC for Oracle};Server=test;UID=test;PWD=test;","test","test");
$query="select * from M_STAFF";
$result=odbc_exec($db,$query);while(odbc_fetch_row($result)){
echo odbc_result($result,2)."
";
}odbc_close($db);
正常に接続できた。
あわせて読みたい
PHPでMaximum execution time of 60 seconds exceededのエラー - TechNote
Maximum execution time of 60 seconds exceededが出てプログラムが終了する場合はphp.iniにて下記を書き換える。時...
PHP+ACCESSでの文字化けについて - TechNote
Accessとの入出力は全てShift-JISになる。ほとんどの場合、結果取得やデータ更新時は文字エンコードが必要。テーブルより取得したデータを画面表示する前$...
プログラムで簡単理解! 7つの超重要な整列アルゴリズム(ソートアルゴリズム)まとめ - TechNote
基本情報技術者試験や応用情報技術者試験の時期も近まった今、あらためて整列アルゴリズムをまとめてみたので、忘備録を兼ねてメモを残します。即席コードも併せて記載しま...

