PHPからODBC経由でoracleデータベースへ接続するための記述

oracle

単純な接続方法だが、意外にハマったのでメモを残す。

スポンサーリンク

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)."<br>";
}
odbc_close($db);

正常に接続できた。

基礎からのOracle (DVD付) (プログラマの種シリーズ)

基礎からのOracle (DVD付) (プログラマの種シリーズ)

新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)

新・門外不出のOracle現場ワザ エキスパートが明かす運用・管理の極意 (DB Selection)

  • 作者: 小田圭二,大塚信男,五十嵐建平,谷敦雄,宮崎博之,神田達成,村方仁
  • 出版社/メーカー: 翔泳社
  • 発売日: 2012/08/17
  • メディア: 単行本(ソフトカバー)
  • 購入: 2人 クリック: 5回
  • この商品を含むブログ (1件) を見る
タイトルとURLをコピーしました