Dutch PHP Conference 2025 - Call For Papers

oci_new_connect

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_new_connectConnect to the Oracle server using a unique connection

Опис

oci_new_connect(
    string $username,
    string $password,
    ?string $connection_string = null,
    string $encoding = "",
    int $session_mode = OCI_DEFAULT
): resource|false

Establishes a new connection to an Oracle server and logs on.

Unlike oci_connect() and oci_pconnect(), oci_new_connect() does not cache connections and will always return a brand-new freshly opened connection handle. This is useful if your application needs transactional isolation between two sets of queries.

Параметри

username

The Oracle user name.

password

The password for username.

connection_string

Містить примірник Oracle для з'єднання. Це може бути або » Easy Connect string, або Connect Name з файлу tnsnames.ora, або назва локального примірника Oracle.

Якщо не вказано або null, то PHP використовує змінні оточення, як от TWO_TASK (в Linux) або LOCAL (у Windows) та ORACLE_SID, щоб визначити примірник Oracle для з'єднання.

Для використання методу називання Easy Connect, PHP має бути скомпоновано з Oracle 10g або новішими клієнтськими бібліотеками. Easy Connect string для Oracle 10g має форму [//]назва_хосту[:порт][/назва_сервісу]. Починаючи з Oracle 11g, синтаксис наступний: [//]назва_хосту[:порт][/назва_сервісу][:тип_сервера][/назва_примірника]. Додаткові можливості були запроваджені в Oracle 19c, як от налаштування обмеженого у часі та постійного з'єднання. Докладніше про це у документації Oracle. Назви служб можна побачити, запустивши утиліту Oracle lsnrctl status на машині сервера бази даних.

Файл tnsnames.ora може бути на шляху пошуку Oracle Net, що містить /ваш/шлях/до/instantclient/network/admin, $ORACLE_HOME/network/admin та /etc. Як варіант, можна встановити TNS_ADMIN, тоді буде прочитано файл $TNS_ADMIN/tnsnames.ora. Вебсервер має мати право на читання цього файлу.

encoding

Визначає набір символів, які використовують клієнтські бібліотеки 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 використовувати зовнішню автентифікацію або автентифікацію операційної системи, котра має бути налаштована в базі даних. Прапорець OCI_CRED_EXT дозволено використовувати тільки з іменем користувача "/" та порожнім паролем. oci8.privileged_connect може бути On або Off.

OCI_CRED_EXT можна поєднувати з режимами OCI_SYSOPER або OCI_SYSDBA.

OCI_CRED_EXT не підтримується у Windows з міркувань безпеки.

Значення, що повертаються

Returns a connection identifier or false on error.

Журнал змін

Версія Опис
8.0.0, PECL OCI8 3.0.0 connection_string is now nullable.

Приклади

The following demonstrates how you can separate connections.

Приклад #1 oci_new_connect() example

<?php

// 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);

// Output is:
// Querying basic connection
// 1234
// Querying new connection
// No rows
// Querying new connection after commit
// 1234

?>

See oci_connect() for further examples of parameter usage.

Прогляньте також

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top