array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'tr', ), 'this' => array ( 0 => 'function.oci-connect.php', 1 => 'oci_connect', ), 'up' => array ( 0 => 'ref.oci8.php', 1 => 'OCI8 İşlevleri', ), 'prev' => array ( 0 => 'function.oci-commit.php', 1 => 'oci_commit', ), 'next' => array ( 0 => 'function.oci-define-by-name.php', 1 => 'oci_define_by_name', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'en', 'path' => 'reference/oci8/functions/oci-connect.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_connect — Connect to an Oracle database
$username
,$password
,$connection_string
= null
,$encoding
= "",$session_mode
= OCI_DEFAULT
Returns a connection identifier needed for most other OCI8 operations.
For performance, most applications should use persistent connections with oci_pconnect() instead of oci_connect(). See Connection Handling for general information on connection management and connection pooling.
The second and subsequent calls to oci_connect() with the same parameters will return the connection handle returned from the first call. This means that transactions in one handle are also in the other handles, because they use the same underlying database connection. If two handles need to be transactionally isolated from each other, use oci_new_connect() instead.
username
The Oracle user name.
password
The password for username
.
connection_string
Bağlanılacak Oracle
nesnesi
ni içerir. Ya » Easy Connect dizgesi, veya
tnsnames.ora dosyasındaki Connect Name ya da yerel
Oracle nesnesi olabilir.
Belirtilmezse ya da null
verilirse, PHP bağlanacağı Oracle nesnesi
ni saptamak için
TWO_TASK
(Linux) veya LOCAL
(Windows) ve ORACLE_SID
gibi ortam değişkenlerini
kullanır.
To use the Easy Connect naming method, PHP must be linked with Oracle
10g or greater Client libraries. The Easy Connect
string for Oracle 10g is of the form:
[//]host_name[:port][/service_name]. With Oracle
[//]host_name[:port][/service_name]. From Oracle
11g, the syntax is:
[//]host_name[:port][/service_name][:server_type][/instance_name].
Futher options were introduced with Oracle 19c, including timeout and
keep-alive settings. Refer to Oracle documentation. Service names can be
found by running the Oracle utility lsnrctl status
on the
database servermachine.
The tnsnames.ora file can be in the Oracle Net search
path, which includes
/your/path/to/instantclient/network/admin,
$ORACLE_HOME/network/admin and /etc.
Alternatively set TNS_ADMIN
so that
$TNS_ADMIN/tnsnames.ora is read. Make sure the web
daemon has read access to the file.
encoding
Oracle
sunucusunun 9.2 ve üstü sürümlerini kullanırken,
karakter_kümesi
bağımsız değişkenini yeni
bağlantıda kullanılacak bağımsız değişkene göre belirtebilirsiniz. Eğer 9.2
sürümünden daha eski bir Oracle sunucusu kullanıyorsanız bu bağımsız değişken yok
sayılacak, yerine NLS_LANG
ortam değişkeni
kullanılacaktır.
If not specified, the
Oracle Client libraries determine a character set from
the NLS_LANG
environment variable.
Passing this parameter can reduce the time taken to connect.
session_mode
This
parameter is available since version PHP 5 (PECL OCI8 1.1) and accepts the
following values: OCI_DEFAULT
,
OCI_SYSOPER
and OCI_SYSDBA
.
If either OCI_SYSOPER
or
OCI_SYSDBA
were specified, this function will try
to establish privileged connection using external credentials.
Privileged connections are disabled by default. To enable them you
need to set oci8.privileged_connect
to On
.
PHP 5.3 (PECL OCI8 1.3.4) introduced the
OCI_CRED_EXT
mode value. This tells Oracle to use
External or OS authentication, which must be configured in the
database. The OCI_CRED_EXT
flag can only be used
with username of "/" and a empty password.
oci8.privileged_connect
may be On
or Off
.
OCI_CRED_EXT
may be combined with the
OCI_SYSOPER
or
OCI_SYSDBA
modes.
OCI_CRED_EXT
is not supported on Windows for
security reasons.
Returns a connection identifier or false
on error.
Sürüm: | Açıklama |
---|---|
8.0.0, PECL OCI8 3.0.0 |
connection_string is now nullable.
|
Örnek 1 Basic oci_connect() using Easy Connect syntax
<?php
// Connects to the XE service (i.e. database) on the "localhost" machine
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
Örnek 2 Basic oci_connect() using a Network Connect name
<?php
// Connects to the MYDB database described in tnsnames.ora file,
// One example tnsnames.ora entry for MYDB could be:
// MYDB =
// (DESCRIPTION =
// (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.oracle.com)(PORT = 1521))
// (CONNECT_DATA =
// (SERVER = DEDICATED)
// (SERVICE_NAME = XE)
// )
// )
$conn = oci_connect('hr', 'welcome', 'MYDB');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
Örnek 3 oci_connect() with an explicit character set
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE', 'AL32UTF8');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}
$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
Örnek 4 Using multiple calls to oci_connect()
<?php
$c1 = oci_connect("hr", "welcome", 'localhost/XE');
$c2 = oci_connect("hr", "welcome", 'localhost/XE');
// Both $c1 and $c2 show the same PHP resource id meaning they use the
// same underlying database connection
echo "c1 is $c1<br>\n";
echo "c2 is $c2<br>\n";
function create_table($conn)
{
$stmt = oci_parse($conn, "create table hallo (test varchar2(64))");
oci_execute($stmt);
echo "Created table<br>\n";
}
function drop_table($conn)
{
$stmt = oci_parse($conn, "drop table hallo");
oci_execute($stmt);
echo "Dropped table<br>\n";
}
function insert_data($connname, $conn)
{
$stmt = oci_parse($conn, "insert into hallo
values(to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
oci_execute($stmt, OCI_DEFAULT);
echo "$connname inserted row without committing<br>\n";
}
function rollback($connname, $conn)
{
oci_rollback($conn);
echo "$connname rollback<br>\n";
}
function select_data($connname, $conn)
{
$stmt = oci_parse($conn, "select * from hallo");
oci_execute($stmt, OCI_DEFAULT);
echo "$connname ----selecting<br>\n";
while (oci_fetch($stmt)) {
echo " " . oci_result($stmt, "TEST") . "<br>\n";
}
echo "$connname ----done<br>\n";
}
create_table($c1);
insert_data('c1', $c1); // Insert a row using c1
sleep(2); // sleep to show a different timestamp for the 2nd row
insert_data('c2', $c2); // Insert a row using c2
select_data('c1', $c1); // Results of both inserts are returned
select_data('c2', $c2); // Results of both inserts are returned
rollback('c1', $c1); // Rollback using c1
select_data('c1', $c1); // Both inserts have been rolled back
select_data('c2', $c2);
drop_table($c1);
// Closing one of the connections makes the PHP variable unusable, but
// the other could be used
oci_close($c1);
echo "c1 is $c1<br>\n";
echo "c2 is $c2<br>\n";
// Output is:
// c1 is Resource id #5
// c2 is Resource id #5
// Created table
// c1 inserted row without committing
// c2 inserted row without committing
// c1 ----selecting
// 09-DEC-09 12:14:43
// 09-DEC-09 12:14:45
// c1 ----done
// c2 ----selecting
// 09-DEC-09 12:14:43
// 09-DEC-09 12:14:45
// c2 ----done
// c1 rollback
// c1 ----selecting
// c1 ----done
// c2 ----selecting
// c2 ----done
// Dropped table
// c1 is
// c2 is Resource id #5
?>
Bilginize:
An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information.