Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[OT] PHP Oracle-Abfragen [solved]
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Sun Feb 24, 2008 5:59 pm    Post subject: [OT] PHP Oracle-Abfragen [solved] Reply with quote

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):'&nbsp;').'</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
View user's profile Send private message
Gibheer
Guru
Guru


Joined: 27 Dec 2004
Posts: 300

PostPosted: Sun Feb 24, 2008 7:30 pm    Post subject: Reply with quote

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
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Sun Feb 24, 2008 9:02 pm    Post subject: Reply with quote

nee, das :data in Zusammenhang mit ocibindbyname verhindert SQL-Injection-Attacks.
_________________
Build your own live cd with catalyst 2.0!
Back to top
View user's profile Send private message
jkoerner
Apprentice
Apprentice


Joined: 04 Nov 2006
Posts: 270

PostPosted: Mon Feb 25, 2008 8:14 am    Post subject: Reply with quote

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
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Mon Feb 25, 2008 5:33 pm    Post subject: Reply with quote

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
View user's profile Send private message
jkoerner
Apprentice
Apprentice


Joined: 04 Nov 2006
Posts: 270

PostPosted: Tue Feb 26, 2008 7:46 am    Post subject: Reply with quote

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
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Tue Feb 26, 2008 9:48 am    Post subject: Reply with quote

hae? 8O 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
View user's profile Send private message
jkoerner
Apprentice
Apprentice


Joined: 04 Nov 2006
Posts: 270

PostPosted: Tue Feb 26, 2008 12:10 pm    Post subject: Reply with quote

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
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Tue Feb 26, 2008 12:41 pm    Post subject: Reply with quote

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
View user's profile Send private message
manuels
Advocate
Advocate


Joined: 22 Nov 2003
Posts: 2146
Location: Europe

PostPosted: Wed Feb 27, 2008 5:44 pm    Post subject: Reply with quote

Für die Akten: mit
Code:
SELECT * AS data FROM projekte_generisch WHERE trim(pid)=:data
klappts.
_________________
Build your own live cd with catalyst 2.0!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum