2016-07-25 4 views
0

Ich habe das Problem, dass meine Abfrage keine Ergebnisse zurückgibt. Es werden zwar keine Fehler oder Warnungen angezeigt. Obwohl die Abfrage selbst ein Ergebnis wird zurückkehren, wenn ich ausführen es direkt auf dem db:Keine Ergebnisse mit ociexecute. Keine Fehlermeldung wird aufgefordert

über php
select doc_id from k.doc_mmkt 
where doc_id = 19068694 

DOC_ID 
19068694 

Kein Ergebnis :-(

:

//Set up Connection 
$cnda = ocilogon($cnxnDabs["dbuser"],$cnxnDabs["dbpwd"],$cnxnDabs["dbname"]); 
if (!$cnda) { 
    $e = ocierror(); 
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); 
} 


//Get query and the result 
$query="select doc_id from k.doc_mmkt where doc_id = 19068694"; 
$stid = ociparse($cnda,$query); 
ocidefinebyname($stid,"doc_id",&$DOCID); 
ociexecute($stid); 
ocifetch($stid); 

Hier wird das Ergebnis auf dem db

Irgendwelche Ratschläge? Verbindung scheint zu funktionieren, da, wenn ich den ZB dbuser manipuliere, dann erscheint eine Warnung.

+1

Ich kann keine Fehler-handlig in diesem Code sehen. Hier ist ein triviales Beispiel für die Fehlerbehandlung: http://web.axelero.hu/lzsiga/oci.txt –

Antwort

-1

addieren Sie thi zwei Linien anstelle Ihres $query="select doc_id from k.doc_mmkt where doc_id = 19068694";

$ doc_id = 19068694; $ query = "Wählen Sie doc_id aus k.doc_mmkt WHERE doc_id = '". $ doc_id. "'";

+0

Bitte schlagen Sie nicht vor, vorbereitete Aussagen zu verwerfen. Sie sind nicht nur ein großartiges Werkzeug, sondern SQL-Injection ist auch nicht gut für Ihre Website. –

+0

es ist vielleicht wegen der Anführungszeichen Problem .. das ist, warum ich so vorgeschlagen – fighter

0

keine Fehler oder Warnungen werden aufgefordert.

Ihr Oracle-bezogenen Code versucht nicht, auch Fehlermeldungen über Verbindungsfehler zu holen:

$stid = ociparse($cnda,$query); 
ocidefinebyname($stid,"doc_id",&$DOCID); 
ociexecute($stid); 
ocifetch($stid); 

... so würde ich nicht überrascht, dass Ihre PHP-Umgebung konfiguriert ist auch nicht auf Fehlermeldungen anzeigen Der einfachste Weg, dies zu tun ist preppending dies in Ihren Quellcode:

error_reporting(-1); 
ini_set('display_errors', true); 

Und Sie können Verwendungsbeispiele auf, wie Sie zu testen, um Fehler in den entsprechenden Handbuchseiten finden.

Hinweis: ocilogon und andere Aliase sind seit einiger Zeit veraltet, es ist an der Zeit, dass Sie auf oci_connect() aktualisieren.

-1

danke für Ihre Antworten. Ich fand heraus, dass die Lösung Großbuchstaben für den Namen der Kopfzeile ist:

//Set up Connection 
$cnda = ocilogon($cnxnDabs["dbuser"],$cnxnDabs["dbpwd"],$cnxnDabs["dbname"]); 
if (!$cnda) { 
    $e = ocierror(); 
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); 
} 


//Get query and the result 
$query="select doc_id from k.doc_mmkt where doc_id = 19068694"; 
$stid = ociparse($cnda,$query); 
ocidefinebyname($stid,"DOC_ID",&$DOCID); 
ociexecute($stid); 
ocifetch($stid); 

Jetzt läuft alles reibungslos. Anscheinend verwendet Oracle Großbuchstaben ^^.

Verwandte Themen