Php: Oracle DB auslesen...
-
Hi,
ich hab versucht mit php auf eine oracle datenbank zu kommen in dem ich die methodik von mysql-DB versuchte zu adaptieren. Verbindung ist hergestellt und ich kann auch was via php in der oracle DB manipulieren. Aber wie les ich das jetzt aus und mach es sichtbar?
<?php $db= "db"; if (!$c1 = @ocinlogon("scott","Pw", $db)) { $error = ocierror(); printf("Verbindungsfehler: %s", $error["message"]); die(); } $stmt = ociparse($c1,"select empno from emp"); ociexecute($stmt); while ($row = oci_fetch_row($stmt)) { var_dump($row); //<== Zeigt wenigstens an das in $row die daten der spalte drin sind echo 'EMPno'.$row['EMPNO'].'<br>'; } ?>
Im php handbuch sind zwar die befehle aufgeführt aber nicht sonderlich gut dokumentiert, liegt wohl auch daran, das mysql der vorzug gewährt wird.
-
Google ist immer dein Freund und Helfer!
http://www.google.de/search?hl=de&q=php+oracle&btnG=Google-Suche&meta=
-
das kenn ich leider schon, hat aber wenig sinnvolles hervorgebracht ...
-
Kannst evt. deine Analysen etwas erklären?
var_dump($row); //<== Zeigt wenigstens an das in $row die daten der spalte drin sind
-
nun was soll ich da erklären?
das ist ein befehl der den inhalt einer variable in diesem falle eines array auf einmal herauswirft... nur das ist nicht was ich will und es sollte lediglich zeigen das daten auf jedenfall eingelesen wurden.
Das problem ist vielmehr das oracle eine sehr eigenwillige syntax hat, bzw. die befehle weniger intuitiv sind zu mysql ...
Die ganzen "beispiele" der einzelenen seiten, die im übrigen fast gänzlich identisch sind sind anders angelegt. Deshalb konnt ich die nicht adaptieren...
Was wiederum mein beweggrund ist in einem forum nach rat zu fragen
-
hi,
nach einigem rumprobieren hat es erstmal soweit funktioniert, bzw. hab ich jetzt eine von vermutlich vielen lösungen
while (oci_fetch($stmt)) { echo 'EMPno'.ociresult($stmt,1).'<br>'; //Die 1 ist wichtig hierbei sonst geht es nicht, alternative geht auch eine for-schleife }
-
Hallo,
also ich versuche jetzt auch über PHP auf meine Oracle Datenbank zuzugreifen, aber nix geht. TNS-Listener funktioniert auch ohne Probleme und Datenbank ist auch richtig installiert und ich kann mit dem PL/SQl Developer darauf zugreifen.
Nur wenn ich folgenden Code ausführe wird mir gar nix ausgegeben. Hab deswegen schon viel rumgesurft,nur hab ich keine einfachen Lösungen dazu gefunden.
Mich würde nur mal interessieren, warum hier gar nix ausgegeben wird.
$db= "datenbank"; $c1 = @ocinlogon("jochen","1234", $db); print_r($c1); echo $c1; if (!$c1 = @ocinlogon("jochen","1234", $db)) { echo ("test"); $error = ocierror(); printf("_Verbindungsfehler: %s_", $error["_message_"]); die(); } else{ echo ("test"); echo("Verbindung hergestellt"); }
Danke, für die Hilfe.
p.s. ja ich hab schon google genützt,.....ja ich hab hier schon die Suchfunktion genutzt.....ja ich hab schon tutorials gefunden, die mir aber alle nix gebracht haben.
-
versuch nummer eins:
nimm mal den fehleroperator @ weg.und ev. lies das:
Note: If you're using PHP with Oracle Instant Client, you can use easy connect naming method described here: » http://download-west.oracle.com/docs/cd/B12037_01/network.101/b10775/naming.htm#i498306. Basically this means you can specify "//db_host[:port]/database_name" as database name. But if you want to use the old way of naming you must set either ORACLE_HOME or TNS_ADMIN.
http://de.php.net/manual/en/function.oci-new-connect.php
wenn wirklich garkeine ausgabe kommt, bitte mal schaun, bis wohin er geht.
also mal ein paar echos von oben bis runter..ps: kommt denn der "test" string? bist du im richtigen skript?
-
Danke für deine Antwort. Das ist ja der Witz. Er springt ich keinen If-Else Teil rein. Und ich kapier net warum.
Ja ich bin im richtige Script. Mach ich es ohne den Fehleroperator kennt er die Funktion nicht.
Das liegt dann vielleicht irgendwie an dem Client.Ich hab da auch schon unzählige Sache im Internet gefunden. Nur scheint es ganz schön aufwendig zu sein, alle Sachen zu installieren die man braucht, um mit php auf oracle zhu connecten, oder?
Mal ganz nebenbei, noch eine andere Frage. In der Arbeit greifen wir über ASPX seiten auf Oracle zu. Ist es über PHP schneller als über aspx? Würde mich mal interessieren.
Vielleicht hat ja noch jemand eine ganz einfach Lösung zu meinem Oracle-Problem.
Ich wäre da echt dankbar.
-
ok.. ich denke, du arbeitest unter windows?
welchen apachen verwendest du, welches php?du musst in der php.ini die oracleerweiterung einbinden, typischerweise nimmt mann das semikolon unter windows einfach weg.
http://www.phpcenter.de/de-html-manual/book.oci8.html
erstmal.
-
Und wenn Du dann soweit bist, denke daran dass logische Negation höher priorisiert ist als der Vergleich:
if (!($c1 = @ocinlogon("jochen","1234", $db)))