関数・クラス解説
oci_new_connect
version:PHP 5, PHP 7, PECL OCI8 >= 1.1.0 (公式)一意な接続を使って Oracle サーバーへ接続する
公式リファレンス
書式
oci_new_connect ( string $username , string $password [, string $connection_string [, string $character_set [, int $session_mode ]]] ) : resource
説明
Oracle サーバーへの新規接続を確立し、ログオンします。
oci_connect() や oci_pconnect() と異なり、oci_new_connect() は接続をキャッシュしません。また、 常に新しくオープンされた接続ハンドルを返します。 これは、もしアプリケーションが 2 セットのクエリ間でトランザクション的な独立を必要とする場合に有効です。
パラメータ
- username
- Oracle のユーザー名。
- password
- username のパスワード。
- connection_string
- 接続先の Oracle インスタンス。» Easy Connect文字列、tnsnames.oraファイルの接続文字列、あるいはローカルの Oracle インスタンス名を指定します。省略した場合、PHP は環境変数TWO_TASK (Linux) あるいはLOCAL (Windows)と ORACLE_SID を用いて接続先のOracle インスタンス を判断します。Easy Connect 方式を使うには、PHP を Oracle10g 以降のクライアントライブラリとリンクさせる必要があります。Oracle 10g の Easy Connect文字列の形式は[//]host_name[:port][/service_name] です。Oracle11g 以降の場合は、この構文は[//]host_name[:port][/service_name][:server_type][/instance_name]となります。サービス名を調べるには、Oracle のユーティリティlsnrctl status をデータベースサーバー上で実行します。tnsnames.ora ファイルは Oracle Net のサーチパス上にあります。サーチパスに含まれるのは $ORACLE_HOME/network/adminや /etc です。もうひとつの方法として、TNS_ADMIN を指定して$TNS_ADMIN/tnsnames.ora を読み込ませることもできます。ウェブデーモンにそのファイルの読み込み権限を与えておきましょう。
- character_set
- Oracle クライアントライブラリが使う文字セットを指定します。これは、データベースが用いる文字セットと一致させる必要はありません。一致していない場合は、Oracleが最善を尽くしてデータベースの文字セットとの間の変換を行います。文字セットによっては、この変換結果がうまく使えないこともあります。また、変換にはそれなりの時間を要します。省略した場合は、Oracle クライアントライブラリは環境変数 NLS_LANGの値をもとに文字セットを判断します。このパラメータを渡すことで、接続に要する時間を短縮できます。
- session_mode
- このパラメータは PHP 5 (PECL OCI8 1.1) 以降で使え、OCI_DEFAULT、OCI_SYSOPER そして OCI_SYSDBAといった値を指定することができます。OCI_SYSOPER あるいはOCI_SYSDBA を指定した場合は、この関数は外部の証明書を使った特権接続の確立を試みます。特権接続は、デフォルトでは無効になっています。有効にするにはoci8.privileged_connectを On に設定しなければなりません。PHP 5.3 (PECL OCI8 1.3.4) 以降、OCI_CRED_EXT モードを使えるようになりました。これは、Oracle に外部認証あるいは OS 認証を使うよう指示します。どちらかをデータベースで設定しておかなければなりません。OCI_CRED_EXT フラグを使えるのは、ユーザー名が"/" でパスワードが空のときだけです。oci8.privileged_connectは On あるいは Off のどちらでもかまいません。OCI_CRED_EXT は、OCI_SYSOPER あるいはOCI_SYSDBA モードと組み合わせて使います。OCI_CRED_EXT は、セキュリティ上の理由によりWindows ではサポートされていません。
返値
接続 ID、あるいはエラー時に FALSE を返します。
サンプル
以下の例は、接続がどのように分割されるかを示すものです。
例1 oci_new_connect() の例
// create table mytab (mycol number);
function query($name, $c)
{
echo "Querying $name\n";
$s = oci_parse($c, "select * from mytab");
oci_execute($s, OCI_NO_AUTO_COMMIT);
$row = oci_fetch_array($s, OCI_ASSOC);
if (!$row) {
echo "No rows\n";
} else {
do {
foreach ($row as $item)
echo $item . " ";
echo "\n";
} while (($row = oci_fetch_array($s, OCI_ASSOC)) != false);
}
}
$c1 = oci_connect("hr", "welcome", "localhost/orcl");
$c2 = oci_new_connect("hr", "welcome", "localhost/orcl");
$s = oci_parse($c1, "insert into mytab values(1234)");
oci_execute($s, OCI_NO_AUTO_COMMIT);
query("basic connection", $c1);
query("new connection", $c2);
oci_commit($c1);
query("new connection after commit", $c2);
// 出力:
// Querying basic connection
// 1234
// Querying new connection
// No rows
// Querying new connection after commit
// 1234
パラメータの使いかたについては、oci_connect() の例も参照ください。
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール