(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_new_connect — Connect to the Oracle server using a unique connection
$username
,$password
,$connection_string
= null
,$encoding
= "",$session_mode
= OCI_DEFAULT
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.