SQLの窓

2011年09月18日


PHP + ADO + Oracle : ADO の オブジェクトを使った更新

あまり一般的ではありませんが、Windows 環境で簡単に Oracle にアクセスするには
COM 経由で ADO を使うのが最も有効です。特に更新では、INSERT 文や UPDATE 文を
作成する必要があります。

※ 以下は、10g の Express で実行している為、列名を使ったアクセスはできていません
※ 11g では最後の AddNew から Update の間で原因不明なエラーが出ます。

結局 Field オブジェクトを使った操作は、PHP からは少し無理があるようです。
( Execute を使った更新は以前よりずっと問題は出ていません )
<?
header( "Content-Type: text/html; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

$Cn = new COM( "ADODB.Connection" );
$Cn->CursorLocation = 3;
$Rs = new COM( "ADODB.Recordset" );
$Rs->LockType = 3;	// オブジェクトを使った更新に必要

$ConnectionString = "Provider=MSDASQL;";	// ODBC ドライバ用
$ConnectionString .= "Driver={Microsoft ODBC for Oracle};";
$ConnectionString .= "SERVER=LIGHT/XE;";
$ConnectionString .= "UID=LIGHTBOX;";
$ConnectionString .= "PWD=LIGHTBOX;";

print $ConnectionString . "\n<br />";

// 接続
$Cn->Open( $ConnectionString );

$Query = "select * from 社員マスタ";

// Query の実行
$Rs->Open( $Query, $Cn );

// 列数
$rec_cnt = $Rs->Fields->Count;
// 列名一覧
for( $i = 0; $i < $rec_cnt; $i++ ) {
	print $Rs->Fields($i)->Name . "\n<br>";
}

// データの扱い
while( !$Rs->EOF ) {

	// 内容の読み出し
	for( $i = 0; $i < $rec_cnt; $i++ ) {
		print $Rs->Fields($i)->Value . " ";
	}

	// オブジェクトを使った更新
	$Rs->Fields(7)->Value += 1;
	$Rs->Update();

	print "\n<br>";

	// SQL を使った更新
	$Query = "update 社員マスタ set";
	$Query .= " 更新日 = TO_DATE('2011/09/18 00:00:00','RRRR/MM/DD HH24:MI:SS')";
	$Query .= " where 社員コード = '{$Rs->Fields(0)->Value}'";
	$Cn->Execute($Query);

	$Rs->MoveNext();
}

// 新規行の作成
$Rs->AddNew();
$Rs->Fields(0)->Value = "9001";
$Rs->Fields(1)->Value = "社員名";
$Rs->Fields(2)->Value = "フリガナ";
$Rs->Fields(5)->Value = "2011/09/18 00:00:00";
$Rs->Fields(6)->Value = NULL;
$Rs->Fields(7)->Value = 1000;
$Rs->Update();

$Cn->Close();

?>

Oracle ユーザ作成 SQL サンプル


【PHP + データベースの最新記事】
posted by lightbox at 2011-09-18 22:55 | PHP + データベース | このブログの読者になる | 更新情報をチェックする
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり