Start · Sprachen · PHP · Referenz · ocinlogon

ocinlogon

Funktion

Alias von <code>oci_new_connect</code> — öffnet eine neue, exklusive Oracle-Datenbankverbindung für den angegebenen Benutzer.

seit PHP 5.0.0 Kategorie: db

Signatur

ocinlogon(string $username, string $password, string $connection_string = '', string $encoding = '', int $session_mode = OCI_DEFAULT): resource|false

Beschreibung

ocinlogon ist ein veralteter Alias für die Funktion oci_new_connect und verhält sich identisch zu ihr. Im Gegensatz zu oci_connect oder oci_pconnect erzeugt diese Funktion stets eine neue, dedizierte Verbindung zur Oracle-Datenbank, auch wenn für denselben Benutzer bereits eine Verbindung besteht.

Dies ist besonders nützlich, wenn innerhalb einer PHP-Anwendung zwei unabhängige Transaktionen gleichzeitig geöffnet sein sollen, da jede Verbindung ihren eigenen Transaktionskontext besitzt. Ein COMMIT oder ROLLBACK auf der einen Verbindung hat keinerlei Einfluss auf die andere.

Achtung: Da ocinlogon ein veralteter Alias ist, sollte in modernem PHP-Code stattdessen oci_new_connect verwendet werden. Die Verwendung von Aliasen erschwert die Lesbarkeit und Wartbarkeit des Codes.

Die Verbindung wird am Ende des Skripts automatisch geschlossen, sofern sie nicht vorher explizit mit oci_close freigegeben wird. Da jede Verbindung Datenbankressourcen belegt, sollte sie so früh wie möglich geschlossen werden.

Parameter

Name Typ Default Beschreibung
$username Pflicht string Oracle-Benutzername für die Verbindung.
$password Pflicht string Passwort des Oracle-Benutzers.
$connection_string string Oracle-Verbindungsstring (z. B. aus tnsnames.ora) oder ein Easy Connect-String wie localhost/XE. Wird dieser leer gelassen, verwendet PHP die Umgebungsvariable ORACLE_SID.
$encoding string Zeichensatz, den der Oracle-Client für die Verbindung verwenden soll, z. B. AL32UTF8. Wird kein Wert übergeben, wird der Zeichensatz aus der Umgebungsvariable NLS_LANG ermittelt.
$session_mode int OCI_DEFAULT Verbindungsmodus. Mögliche Werte sind OCI_DEFAULT, OCI_SYSOPER und OCI_SYSDBA. Letztere erfordern besondere Oracle-Berechtigungen.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine Oracle-Verbindungsressource zurück. Im Fehlerfall (z. B. falsche Zugangsdaten oder nicht erreichbarer Server) wird false zurückgegeben.

Beispiele

Neue exklusive Oracle-Verbindung herstellen

<?php
// Veraltet: ocinlogon verwenden (Alias für oci_new_connect)
$conn = ocinlogon('hr', 'geheimesPasswort', 'localhost/XE', 'AL32UTF8');

if (!$conn) {
    $err = ocierror();
    trigger_error('Verbindung fehlgeschlagen: ' . $err['message'], E_USER_ERROR);
}

$stid = ociparse($conn, 'SELECT first_name FROM employees WHERE rownum <= 3');
ociexecute($stid);

while ($row = ocifetcharray($stid, OCI_ASSOC)) {
    echo $row['FIRST_NAME'] . PHP_EOL;
}

ocilogoff($conn);
Ellen Sundar Mozhe

Zwei unabhängige Transaktionen mit je einer eigenen Verbindung

<?php
// Bevorzugt: oci_new_connect statt ocinlogon
$conn1 = oci_connect('hr', 'geheimesPasswort', 'localhost/XE');
$conn2 = ocinlogon('hr', 'geheimesPasswort', 'localhost/XE'); // neue, separate Verbindung

// Transaktion 1 auf $conn1
$stid1 = oci_parse($conn1, "UPDATE employees SET salary = salary * 1.1 WHERE department_id = 10");
oci_execute($stid1, OCI_NO_AUTO_COMMIT);

// Transaktion 2 auf $conn2 — unabhängig von $conn1
$stid2 = oci_parse($conn2, "UPDATE employees SET salary = salary * 1.05 WHERE department_id = 20");
oci_execute($stid2, OCI_NO_AUTO_COMMIT);

// Nur Transaktion 1 bestätigen
oci_commit($conn1);
// Transaktion 2 zurückrollen
oci_rollback($conn2);

oci_close($conn1);
oci_close($conn2);

echo 'Transaktionen abgeschlossen.';
Transaktionen abgeschlossen.

// Wichtig · Fallstricke

Deprecation-Hinweis: ocinlogon ist ein veralteter Alias und sollte nicht mehr in neuem Code verwendet werden. Die empfohlene Funktion ist oci_new_connect. Alte Aliasnamen ohne Unterstrich (wie ocinlogon, ocilogoff, ociparse etc.) gelten seit PHP 5.4 als veraltet.

Ressourcenverbrauch: Da ocinlogon/oci_new_connect niemals eine gecachte oder persistente Verbindung zurückgibt, verbraucht jeder Aufruf eine neue Oracle-Session. In Umgebungen mit vielen gleichzeitigen Anfragen kann dies schnell zum Erschöpfen der Oracle-Verbindungslimits führen. Den Einsatz deshalb auf Szenarien beschränken, in denen wirklich ein separater Transaktionskontext benötigt wird.

Sicherheit: Zugangsdaten (username, password) sollten niemals im Quellcode hartcodiert werden. Stattdessen Umgebungsvariablen oder einen sicheren Konfigurationsspeicher verwenden.