OCI vs. PDO
// データベースの呼び出し関数は以下のようになります。
//OCILogon() - データベースへのログイン, OCIParse() - SQL のパース
//OCIExecute() - ステートメントの実行, OCIFetch() - 結果セットの解放
// データベース接続の設定
$strUser = "scott"
$strPwd = "tiger"
$strDB="(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)
(HOST=my.hostname.domain.com)(PORT=1521)
)
)
(CONNECT_DATA=(SERVICE_NAME=theservice))
)"
// データベースへのログイン
$objDBConn = OCILogon($strUser, $strPwd, $strDB);
//DB オブジェクトのチェック
if($objDBConn){
//SQL の作成
$strSQL = "SELECT FIRST_NAME, LAST_NAME FROM PEOPLE.TBL_NAMES"
//SQL のパース
$objQuery = OCIParse($objDBConn, $strSQL);
//SQL ステートメントの実行
$objResult = OCIExecute($objQuery);
//SQL ステートメントのチェック
if($objResult){
// 結果セットに対するループ
while(OCIFetch($objQuery)){
echo OCIResult($objQuery, "FIRST_NAME”);
echo " ";
echo OCIResult($objQuery, "LAST_NAME”);
echo "<br>"
}//end while
}else{
// クエリエラーの発生
$arrError = OCIError($objQuery);
}//end objResult if
}else{
// データベースへのログイン失敗
$arrError = OCIError();
}//end objDBConn if
if(isset($arrError)){
echo "ERROR: ".$arrError['message'];
}
// PDO API を利用して上記と同じことを実行するためには以下のようにします。
// データベース接続の設定
$strUser = "scott"
$strPwd = "tiger"
$strDB = "OCI:dbname=theservice;host=my.hostname.domain.com"
try{
$objDB = new PDO($strDB, $strUser, $strPwd);
}
catch (PDOException $objException){
echo "ERROR: " . $objException->getMessage();
}
//SQL の作成
$strSQL = "SELECT FIRST_NAME, LAST_NAME FROM PEOPLE.TBL_NAMES"
foreach($objDB->query($strSQL) as $arrRow){
echo $arrRow['FIRST_NAME'];
echo " ";
echo $arrRow['LAST_NAME'];
echo "<br>"
}
|