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

Beschreibung

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.

Parameter-Liste

username

The Oracle user name.

password

The password for username.

connection_string

Beinhaltet die Oracle-Instanz, mit der verbunden werden soll. Dies kann eine » Easy-Connect-Zeichenkette, ein Connect-Name aus der Datei tnsnames.ora oder der Name einer lokalen Oracle-Instanz sein.

Wenn dies nicht angegebe wird oder null ist, verwendet PHP Umgebungsvariablen wie TWO_TASK (unter Linux), LOCAL (unter Windows) oder ORACLE_SID um die Oracle-Instanz zu ermitteln, mit der verbunden werden soll.

Um die benannte Easy Connect Methode zu verwenden, muss PHP gegen die Clientbibliotheken von Oracle 10g oder höher gelinkt sein. Die Easy-Connect-Zeichenkette für Oracle 10g hat den Aufbau: [//]host_name[:port][/service_name]. Für Oracle 11g ist die Syntax: [//]host_name[:port][/service_name][:server_type][/instance_name]. Weitere Optionen wurden mit Oracle 19c eingeführt, darunter die timeout- und die keep-alive-Einstellungen. Siehe dazu die Oracle-Dokumentation. Die Servicenamen können ermittelt werden, indem man das Oracle-Hilfswerkzeug lsnrctl status auf dem Datenbankserver ausführt.

Die Datei tnsnames.ora kann sich im Oracle Net Suchpfad befinden, welcher /der/pfad/zu/instantclient/network/admin, $ORACLE_HOME/network/admin sowie /etc beinhaltet. Alternativ kann TNS_ADMIN so gesetzt werden, dass $TNS_ADMIN/tnsnames.ora gelesen wird. Es muss sichergestellt sein, dass der Webserver eine Leseberechtigung für die Datei besitzt.

encoding

Bestimmt den Zeichensatz, der von den Oracle Client Bibliotheken verwendet wird. Dieser Zeichensatz muss nicht dem von der Datenbank verwendeten Zeichensatz entsprechen. Wenn diese nicht übereinstimmen, wird Oracle bestmöglich versuchen, die Daten in den Datenbankzeichensatz zu übersetzen. Abhängig von den Zeichensätzen kann dies zu unbrauchbaren Ergebnissen führen. Diese Konvertierung führt auch zu einem erhöhten Zeitbedarf.

Falls nicht angegeben, werden die Oracle Client Bibliotheken versuchen, den Zeichensatz aus der Umgebungsvariablen NLS_LANG auszulesen.

Die Übergabe dieses Parameters verringert die Zeit für den Verbindungsaufbau.

session_mode

Dieser Parameter ist seit PHP 5 (PECL OCI8 1.1) verfügbar und akzeptiert die folgenden Werte: OCI_DEFAULT, OCI_SYSOPER und OCI_SYSDBA. Falls entweder OCI_SYSOPER oder OCI_SYSDBA angegeben wurden wird diese Funktion versuchen die priviligierte Verbindung mit externen Credentials aufzubauen. Um diese einzuschalten muss man oci8.privileged_connect auf On setzen.

PHP 5.3 (PECL OCI8 1.3.4) hat den Wert OCI_CRED_EXT eingeführt. Dies konfiguriert Oracle dazu eine externe oder Os-Authentifizierung vorzunehmen, welche in der Datenbank konfiguriert werden muss. Der Schalter OCI_CRED_EXT kann nur mit dem Benutzernamen "/" und einem leeren Passwort verwendet werden. oci8.privileged_connect kann entweder On oder Off sein.

OCI_CRED_EXT kann mit OCI_SYSOPER oder OCI_SYSDBA kombiniert werden.

OCI_CRED_EXT ist auf Windows-Systemen aus sicherheitsgründen nicht unterstützt.

Rückgabewerte

Returns a connection identifier or false on error.

Changelog

Version Beschreibung
8.0.0, PECL OCI8 3.0.0 connection_string is now nullable.

Beispiele

The following demonstrates how you can separate connections.

Beispiel #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($sOCI_NO_AUTO_COMMIT);
    
$row oci_fetch_array($sOCI_ASSOC);
    if (!
$row) {
        echo 
"No rows\n";
    } else {
        do {
            foreach (
$row as $item)
                echo 
$item " ";
            echo 
"\n";
        } while ((
$row oci_fetch_array($sOCI_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($sOCI_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.

Siehe auch

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Neuigkeiten für PHP-Entwickler: Laravel 11 Veröffentlichung

Am 12. März 2024 wurde die lang erwartete Version 11 des Laravel-Frameworks veröffentlicht, die eine Reihe von spannenden Neuerungen und Verbesserungen für die PHP-Entwicklungsgemeinschaft mit sich bringt. ...

Mike94

Autor : Mike94
Kategorie: PHP Magazin

Technisches SEO bleibt relevant

Technisches SEO – Was ist das überhaupt? Technisches SEO bezieht sich auf die Optimierung der technischen Aspekte deiner Webseite. Das Ziel ist klar! ...

admin

Autor : admin
Kategorie: SEO & Online-Marketing

Was ist neu in der PHP 8.2.10

PHP 8.2.10 ist eine der neuesten Versionen von PHP, die eine Reihe von Verbesserungen und neuen Funktionen mit sich bringt. In diesem Artikel werden wir einige der herausragenden Neuerungen und Verbesserungen dieser Version diskutieren. ...

admin

Autor : admin
Kategorie: Software-Updates

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

Seltsames Verhalten von execute() oder Fehler meinerseits

Hallo liebe Community, ich habe ein kleines Problem und vielleicht kann mir ja jemand helfen, würde ich mich sehr drüber freuen. Unten steht e ...

Geschrieben von garibaldiwz am 22.03.2024 13:03:12
Forum: SQL / Datenbanken
Google reCAPTCHA in Kontaktformular einbinden

Überprüfen Sie den E-Mail-Versand: Stellen Sie sicher, dass die E-Mail-Funktion mail() ordnungsgemäß funktioniert und dass keine Fehler beim V ...

Geschrieben von Gast am 18.03.2024 04:54:16
Forum: PHP Developer Forum
`count.php`

Hallo cober93327, und Danke fuer deine Antwort! :-) Naja, so einen "Besucherzähler" auf der Webseite anzuzeigen ist schon eher etwas, das man a ...

Geschrieben von kekse1 am 17.03.2024 15:56:38
Forum: Projekthilfe
`count.php`

Es gibt dazu natuerlich auch eine recht ausfuehrliche Dokumentation in meinem GitHub-Repository Es würde meiner Ansicht nach enorm helfen, wenn D ...

Geschrieben von cober93327 am 14.03.2024 15:49:28
Forum: Projekthilfe