|
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。
zip形式
tgz形式
クラス化の第一弾(というよりも、何かのたたき台?)として、WEB+DB PRESSのサンプルサイトで使用したJDBC風のOracleアクセスクラスをちょっとだけ修正・拡張し、ダウンロードできるようにしました。PHPDocで作成したAPIドキュメントもアーカイブに含まれています。
簡単なサンプルスクリプト(oci_test.php)も付けてますので、Oracleに接続可能な環境があれば実際に試してみることができます。JDBCを使ったことのある方なら見ていただければお分かりの通りかなりJDBCのAPIに似ています。本来、JDBCはJavaで言うinterfaceですが、PHPにはinterfaceに(機能的に)相当するものはありませんので、Classとして実装しています。
●oci_test2.php
<?php
ini_set("include_path", "/home/shimooka/public_html/class/php");
require_once "jp/ne/hi_ho/pat/dimension/sql/jdbc/OCI.phl";
?>
<?php
$dbc =& new OCI();
if (!$dbc->connect("scott", "tiger", "orcl")) {
die("接続に失敗しました<br>");
}
:
$sql = "SELECT * FROM test WHERE char3 = ? ";
$pstmt = $dbc->prepareStatement($sql);
echo "get_class1=" . get_class($pstmt) . "<br>";
if ($dbc->isError($pstmt)) {
echo $pstmt->getMessage() . "<br>";
echo $pstmt->getCode() . "<br>";
exit;
}
$ret = $pstmt->setString(1, "abc%");
echo "get_class ret=" . get_class($ret) . "<br>";
if ($dbc->isError($ret)) {
echo $ret->getMessage() . "<br>";
echo $ret->getCode() . "<br>";
exit;
}
$rset = $pstmt->executeQuery();
echo "get_class2=" . get_class($rset) . "<br>";
if ($dbc->isError($rset)) {
echo $rset->getMessage() . "<br>";
echo $rset->getCode() . "<br>";
$pstmt->close();
exit;
}
while ($rset->next())
{
echo "no=" . $rset->getString("EMPNO") . "\t";
echo "name=" . $rset->getString("ename") . "\t";
echo "name=" . $rset->getString("char3") . "<br>";
}
$rset->close();
$pstmt->close();
:
$dbc->close();
?>
|