oci_connect

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

oci_connect����һ���� Oracle ������������

˵��

oci_connect ( string $username , string $password [, string $db [, string $charset [, int $session_mode ]]] ) : resource

oci_connect() ����һ������� OCI ���ö���Ҫ�����ӱ�ʶ������ѡ�ĵ������������԰�����Ҫ���ӵı��� Oracle ��ʵ���Ļ����� tnsnames.ora �е���Ŀ�����֡����û��ָ����ѡ�ĵ�����������PHP ʹ�û������� ORACLE_SID��Oracle ʵ������ TWO_TASK��tnsnames.ora����ȷ��������һ�����ݿ⡣

session_mode �����԰汾 1.1 ����ò���������ֵ��OCI_DEFAULT��OCI_SYSOPER �� OCI_SYSDBA�����ָ���� OCI_SYSOPER �� OCI_SYSDBA ����֮һ��oci_connect() ������ʹ���ⲿ��֤��Ϣ������Ȩ���ӡ���Ȩ����Ĭ�ϱ���ֹ��Ҫ���ã���Ҫ�� oci8.privileged_connect ��Ϊ On��

Note: �� oci_connect() ��ͬ���IJ����ڶ��μ�֮��ĵ��ý����ص�һ�ε��������ص����Ӿ����Ҳ����˵��һ����������IJ�ѯҲ��������һ���������Ϊ������ͬһ�����������Ϊ��ʾ��������� 1�������Ҫ��������������ϻ�����뿪��Ӧ��ʹ�� oci_new_connect() �������

ʹ�� Oracle �ͻ��˿���ȷ���ַ������ַ�������Ҫ�����ݿ���ַ�����ƥ�䡣�����ƥ�䣬Oracle �ᾡ���ܵؽ����ݴ����ݿ��ַ�������ת������Ϊ�������ַ��������ܲ��ܸ������õĽ����ת��Ҳ����һЩʱ�俪����

�����ָ����Oracle �ͻ����� NLS_LANG ���������������ַ�����

���ݴ˲����ɼ�������ʱ�䡣

Example #1 oci_connect() ����

<?php
echo "<pre>";
$db "";

$c1 oci_connect("scott""tiger"$db);
$c2 oci_connect("scott""tiger"$db);

function 
create_table($conn)
{
  
$stmt oci_parse($conn"create table scott.hallo (test varchar2(64))");
  
oci_execute($stmt);
  echo 
$conn " created table\n\n";
}

function 
drop_table($conn)
{
  
$stmt oci_parse($conn"drop table scott.hallo");
  
oci_execute($stmt);
  echo 
$conn " dropped table\n\n";
}

function 
insert_data($conn)
{
  
$stmt oci_parse($conn"insert into scott.hallo
            values('
$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  
oci_execute($stmtOCI_DEFAULT);
  echo 
$conn " inserted hallo\n\n";
}

function 
delete_data($conn)
{
  
$stmt oci_parse($conn"delete from scott.hallo");
  
oci_execute($stmtOCI_DEFAULT);
  echo 
$conn " deleted hallo\n\n";
}

function 
commit($conn)
{
  
oci_commit($conn);
  echo 
$conn " committed\n\n";
}

function 
rollback($conn)
{
  
oci_rollback($conn);
  echo 
$conn " rollback\n\n";
}

function 
select_data($conn)
{
  
$stmt oci_parse($conn"select * from scott.hallo");
  
oci_execute($stmtOCI_DEFAULT);
  echo 
$conn."----selecting\n\n";
  while (
oci_fetch($stmt)) {
    echo 
$conn " [" oci_result($stmt"TEST") . "]\n\n";
  }
  echo 
$conn "----done\n\n";
}

create_table($c1);
insert_data($c1);   // Insert a row using c1
insert_data($c2);   // Insert a row using c2

select_data($c1);   // Results of both inserts are returned
select_data($c2);

rollback($c1);      // Rollback using c1

select_data($c1);   // Both inserts have been rolled back
select_data($c2);

insert_data($c2);   // Insert a row using c2
commit($c2);        // Commit using c2

select_data($c1);   // Result of c2 insert is returned

delete_data($c1);   // Delete all rows in table using c1
select_data($c1);   // No rows returned
select_data($c2);   // No rows returned
commit($c1);        // Commit using c1

select_data($c1);   // No rows returned
select_data($c2);   // No rows returned

drop_table($c1);
echo 
"</pre>";
?>

oci_connect() ��������򷵻� FALSE��

Note:

�� PHP 5.0.0 ֮ǰ�İ汾����ʹ�� ocilogon() ������������ú�������Ȼ���ã�Ϊ���¼�����Ϊ oci_connect() �ı������������ѱ����������Ƽ�ʹ�á�

�μ� oci_pconnect()��oci_new_connect() �� oci_close()��

����

username

The Oracle user name.

password

The password for username.

connection_string

����Ҫ���ӵ� Oracle ʵ���������� » Easy Connect �������� tnsnames.ora �ļ��е������������DZ��� Oracle ʵ������

�����ָ����PHP ʹ�û���������ȷ�����ӵ� Oracle ʵ�������� TWO_TASK��Linux �£��� LOCAL��Windows �£��� ORACLE_SID �ȡ�

Ҫʹ�� Easy Connect ����������PHP ������ Oracle 10g ����߰汾�Ŀͻ��˿�������ӡ�Oracle 10g �� Easy Connect ����ʽ��[//]host_name[:port][/service_name]��Oracle 11g ��Ϊ��[//]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 ����ȡ����ȷ�� web �ػ����̿ɶ�ȡ���ļ���

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 ���ݿ��н������á�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.

����

Example #2 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($stidOCI_ASSOC+OCI_RETURN_NULLS)) {
    echo 
"<tr>\n";
    foreach (
$row as $item) {
        echo 
"    <td>" . ($item !== null htmlentities($itemENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

?>

Example #3 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($stidOCI_ASSOC+OCI_RETURN_NULLS)) {
    echo 
"<tr>\n";
    foreach (
$row as $item) {
        echo 
"    <td>" . ($item !== null htmlentities($itemENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

?>

Example #4 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($stidOCI_ASSOC+OCI_RETURN_NULLS)) {
    echo 
"<tr>\n";
    foreach (
$row as $item) {
        echo 
"    <td>" . ($item !== null htmlentities($itemENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo 
"</tr>\n";
}
echo 
"</table>\n";

?>

Example #5 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($stmtOCI_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($stmtOCI_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

?>

ע��

Note:

An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information.

Note:

In PHP versions before 5.0.0 use ocilogon() instead. �ڵ�ǰ�汾�У��ɵĺ����������Ա�ʹ�ã����Ѿ���������������ʹ�á�

�μ�

  • oci_pconnect() - ʹ��һ���־��������� Oracle ���ݿ�
  • oci_new_connect() - ����һ���� Oracle ��������������
  • oci_close() - �ر� Oracle ����