Hilfe:Oracle mit PHP verbinden

Zur Navigation springen Zur Suche springen

Der PHP-Code für die Abfrage mittels SQL wird mittels Extension eingebunden: Erweiterungen für Oracle

PHP.ini

In der php.ini die Zeile extension=php_oci8_12c.dll aktivieren, XAMPP neu starten.|bwidth=auto; display: inline-block

Oracle Client installieren

Von der Oracle Seite den Client herunterladen: Oracle Instant Client Downloads. Falls der Link nicht mehr funktioniert, auf der Oracle Homepage nach Instant Client suchen.

Es wird empfohlen, die 32-Bit Version zu verwenden, auch wenn das Betriebssystem auf dem Server 64Bit ist, weil XAMPP mit 32Bit übersetzt wurde.

Das Archiv in ein beliebiges Verzeichnis auf dem Server entpacken, d.h. das im Archiv enthaltene Verzeichnis auf den Server kopieren, in meinem Fall C:\wiki\php\ext\instantclient_12_2, wahrscheinlich ist es nicht erforderlich, das Verzeichnis im Apache-Verzeichnis anzulegen. Das Verzeichnis in die Umgebungsvariable path hinzufügen (in der Systemsteuerung bzw. control panel nach path oder pfad suchen, je nach Windows-Sprachversion).

Oracle Konfigurationsdateien

Im Oracle-Verzeichnis C:\wiki\php\ext\instantclient_12_2 ein Unterverzeichnis \network\admin anlegen, die Konfigurationsdateien sqlnet.ora und tnsnames.ora vom Netzlaufwerk P:\ORACLE\Network dorthin kopieren.

PHP-Code

Die Verbindungsvariablen definieren und testen, ob der Aufruf funktioniert.

Zu beachten ist, dass der Name der Datenbankinstanz, wie er in tnsnames.ora definiert wird, an den Servernamen mittels Bindestrich angehängt wird.

Das leidige Umlautproblem wird mit der Angabe von 'AL32UTF8' beim Verbindungsaufbau behoben. Damit werden alle Umlaute richtig dargestellt, sowohl bei Spaltenüberschriften als auch in Variableninhalten.

<?php

// Create connection to Oracle
define('DB_SERVER', 'ip/instanz');
define('DB_USERNAME', 'meinusername');
define('DB_PASSWORD', 'meinpasswort');

$conn = oci_connect(DB_USERNAME, DB_PASSWORD, DB_SERVER, 'AL32UTF8');
if (!$conn) {
   $m = oci_error();
   echo $m['message'], "\n";
   exit;
}
else {
   print "Connected to Oracle!";
}

// Close the Oracle connection
oci_close($conn);

?>

Eine einfache SQL-Abfrage:

=<?php

// Create connection to Oracle
define('DB_SERVER', 'ip/instanz');
define('DB_USERNAME', 'username');
define('DB_PASSWORD', 'passwort');

$conn = oci_connect(DB_USERNAME, DB_PASSWORD, DB_SERVER, 'AL32UTF8');
if (!$conn) {
   $m = oci_error();
   echo $m['message'], "\n";
   exit;
}
else {
   print "Connected to Oracle!";
   $stid = oci_parse($conn, 'SELECT * FROM product_component_version'); 
   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";
  }
}
// Close the Oracle connection
oci_close($conn);
?>

Angewendet ergibt die Abfrage folgendes: {{OraSql|mitcode=|1=SELECT * FROM PRODUCT_COMPONENT_VERSION}}

Test der Umlaute

{{OraSql|mitcode=y|1=SELECT 'Umlaute: äüö ÄÜÖ ß' as "schöne Umlaute" FROM Dual}}

Links