View previous topic :: View next topic |
Author |
Message |
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Sun Feb 24, 2008 5:59 pm Post subject: [OT] PHP Oracle-Abfragen [solved] |
|
|
Hallo zusammen,
ich raff hier mal gar nichts mehr
btw: erstmal sorry für den Offtopic-Thread, aber ich glaub ich bin wirklich zu dumm.
Ich möchte eine Oracle-Abfrage in PHP starten und nutze dafür folgenden Code:
Code: |
$sql = "Select * from projekte_generisch where pid=:data";
$conn = oci_connect("geheim", "geheim", "geheim");
$cur = oci_parse($conn, $sql);
my_dump($conn, $cur, $sql);
$pid = "einepid";
my_dump(ocibindbyname($cur, ":data", $pid));
my_dump(oci_execute($cur));
print '<table border="1">';
while ($row = oci_fetch_array($cur, OCI_RETURN_NULLS)) {
print '<tr>';
foreach ($row as $item) {
print '<td>'.($item?htmlentities($item):' ').'</td>';
}
print '</tr>';
}
print '</table>';
|
Das Problem ist, dass kein Datensatz ausgespuckt wird, obwohl ein Datensatz exisitert!
mit Code: | $sql = "Select * from projekte_generisch where pid='einepid'"; | funktioniert es ohne Probleme.
Hat jemand von euch einen Plan was hier schief laufen könnte?
ocibindbyname nutze ich doch wohl richtig?
Normalerweise nutze ich adoDB um SQL-Anweisungen auszuführen. Dort habe ich das selbe Problem: Nutze ich ? oder :variable in dem SQL-String, krieg ich keinen Datensatz zurück - und auch keinen Fehler bei ocibindbyname oder oci_execute; wenn ich den Wert "direkt in den String setze", funktioniert alles problemlos.
Wer kann mir die Tomaten von den Augen nehmen???
Danke für Tipps!
Manuel _________________ Build your own live cd with catalyst 2.0!
Last edited by manuels on Wed Feb 27, 2008 5:44 pm; edited 1 time in total |
|
Back to top |
|
|
Gibheer Guru
Joined: 27 Dec 2004 Posts: 300
|
Posted: Sun Feb 24, 2008 7:30 pm Post subject: |
|
|
was sollen denn die : oder ? bringen? Wenn du eine pid uebergeben willst, dann eher mit $sql = "Select * from projekte_generisch where pid='".$data."';"; |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
|
Back to top |
|
|
jkoerner Apprentice
Joined: 04 Nov 2006 Posts: 270
|
Posted: Mon Feb 25, 2008 8:14 am Post subject: |
|
|
Moin,
ich benutze nur postgresql, daher nur mal eine Vermutung. Schon mal Code: | Select * from projekte_generisch where pid=':data' | getestet?
Also nach dem =-Zeichen Quotes verwendet? |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Mon Feb 25, 2008 5:33 pm Post subject: |
|
|
wenn ich das mache, liefert mir ocibindbyname false zurück - oci_execute allerdings true. Bekomm aber trotzdem keinen einzigen Datensatz. _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
jkoerner Apprentice
Joined: 04 Nov 2006 Posts: 270
|
Posted: Tue Feb 26, 2008 7:46 am Post subject: |
|
|
Da der zurückgelieferte Datensatz als Variable case-sensitive behandelt wird wirst du das wohl anpassen müssen.
In einer SQL Query mach ich das mit Code: | SELECT * AS data FROM projekte_generisch WHERE pid=':data' |
Man kann sich so Werte und Namen bei der Datenbankabfrage als Variable mit anderem Namen zurückgeben lassen. Danach kann man den zurückgegebenen Wert als data weiter verarbeiten. |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Tue Feb 26, 2008 9:48 am Post subject: |
|
|
hae? Wie jetzt?
Wieso sollte ich den zurueckgelieferten Datensatz als Variable in SQL verarbeiten wollen?
:data ist doch nur meine 'Input-Variable' in die ich das gewuenschte pid schreibe.
Hab ich da was nich ganz verstanden oder wozu verbindest du dann den Output mit dem Input? _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
jkoerner Apprentice
Joined: 04 Nov 2006 Posts: 270
|
Posted: Tue Feb 26, 2008 12:10 pm Post subject: |
|
|
Sorry,
vergiss es, das war nicht richtig... Hab' leider den Kopf zu tief in einem Finanzprogramm...(Ich bilde Summen und Differenzen innerhalb der Spalten und gebe die als Variable zurück, was zwar ähnlich aber nicht vergleichbar ist)
Fakt ist, dass =: in SQL-Queries nicht funktionieren, jedoch die selbe Abfrage mit =':' funktioniert. Du musst wohl deinen php-Code etwas an die Quotes anpassen. |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
Posted: Tue Feb 26, 2008 12:41 pm Post subject: |
|
|
jkoerner wrote: | Fakt ist, dass =: in SQL-Queries nicht funktionieren, jedoch die selbe Abfrage mit =':' funktioniert. Du musst wohl deinen php-Code etwas an die Quotes anpassen. |
Nicht im Oracle-Syntax. Da brauch man keine Quotes. _________________ Build your own live cd with catalyst 2.0! |
|
Back to top |
|
|
manuels Advocate
Joined: 22 Nov 2003 Posts: 2146 Location: Europe
|
|
Back to top |
|
|
|