ERLEDIGT
NEIN
NEIN
ANTWORTEN
15
15
ZUGRIFFE
2678
2678
EMPFEHLEN
-
Hallo,
ich habe da mal wieder ein Problem mit PDO. Wenn ich eine "normale" Abfrage auf die
Oracle-Datenbank durchführe, bekomme ich ein Ergebnis.
"normale" Abfrage:
...mit prepared Statements bekomme ich nun leider überhaupt nichts zurückgeliefert. Weder eine Fehlermeldung noch ein Ergebnis.PHP-Code:try {
$artnr="10277";
$dbh = new PDO("oci:dbname=db", "scott", "tiger");
foreach ($dbh->query("SELECT BESTAND FROM TABELLE WHERE ARTIKEL=$artnr) as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
prepared Statement:
So, ich hoffe Ihr könnt mir mal wieder weiterhelfen!PHP-Code:try {
$artnr="10277";
$dbh = new PDO("oci:dbname=db", "scott", "tiger");
$stmt = $dbh->prepare(SELECT BESTAND FROM TABELLE WHERE ARTIKEL=?);
$stmt->bindParam(1,$artnr);
$stmt->execute();
$row = $stmt->fetch();
print_r($row);
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
MfG
Mc Coke
-
Morgen,
also was mir zu Beginn auffällt ist, dass
Code :1
$stmt = $dbh->prepare(SELECT BESTAND FROM TABELLE WHERE ARTIKEL=?);
so aussehen müsste.
Code :1
$stmt = $dbh->prepare("SELECT BESTAND FROM TABELLE WHERE ARTIKEL = ? ");
Liefert er denn einen Fehler?
-
Sorry, habe ich falsch reinkopiert....
Obwohl ich PDOException abfange, erhalte ich kein Fehlermeldung..
-
Hast du mal geschaut, was dir $stmt->prepare zurückliefert?
Es müsste ein Objekt vom Typ Statement.
So würde ich Zeile für Zeile mal durchgehen.
Unten würde ich es noch so machen:
Probier mal aus u. sag was er ausgibt, falls es Online ist kannst du ja auch die URL mal angeben.PHP-Code:foreach($stmt->fetch() as $row) {
var_dump($row);
}
-
liefert folgendes:PHP-Code:
print_r($stmt);
PDOStatement Object ( [queryString] => SELECT BESTAND FROM TABELLE WHERE Artikel= ?)
mit
liefert er folgende Fehlermeldung:PHP-Code:foreach($stmt->fetch() as $row) {
var_dump($row);
}
Ich denke mal, dass fetch() kein Ergebnis liefert und deshalb die Fehlermeldung kommt.PHP-Code:Warning: Invalid argument supplied for foreach()
Ich bin in einer lokalen Testumgebung... steht also leider nicht online
-
Dein fetch() liefert dir kein Array, deshalb kommt dieser Fehler.
Gib mal noch $stmt->execute(); aus, was er da liefert.
-
liefert eine 1.PHP-Code:
$stmt->execute();
-
10.05.07 09:47 #8
Ist denn auch wirklich etwas mit der $artnr in der Datenbank?
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Ja, die Artikelnummer ist vorhanden. Wie schon beschrieben liefert die obere Abfrage ja ein Ergebnis. Kann es evtl. mit der Oracle-Datenbankversion zusammenhängen? Die Version ist 9.2.
-
Also mit Oracle kenn ich mich nicht aus.
Aber die 1 besagt ja, dass es erfolgreich ausgeführt wurde.
Kannst ja mal mit $stmt->fetch_all() testen und ausgeben lassen.
Ansonsten nimm halt kein prepared Statement, sondern bau die das SQL-Query einfach normal zusammen.
-
10.05.07 10:28 #11
PDO ohne Prepared Statements ist ja fast genau wie OOP ohne Klassen

Wenn man bereits schon einmal umstellt, sollte man auch richtig umstellen.
Ich habe es mal auf MySQL umgestellt und es funktioniert einwandfrei...KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
Ich habe mir auch extra eine Klasse gebaut, die eine Verbindung zu einer Oracle und MySQL-Datenbank aufbaut und Befehle ausführen kann, deswegen fände ich es mal gut, wenn das funktionieren würde...
-
Ich habe das ganze jetzt mal so probiert:
PHP-Code:try {
$artnr="10277";
$dbh = new PDO("oci:dbname=db", "scott", "tiger");
$stmt = $dbh->prepare("SELECT BESTAND FROM TABELLE WHERE ARTIKEL= :artnr");
$stmt->bindParam(':artnr', $artnr, PDO_PARAM_STR, 12);
if ($stmt->execute()) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
..und ich bekomme folgende Fehlermeldung, mit der ich leider nichts anfangen kann:
Warning: PDOStatement::bindParam() expects parameter 3 to be long, string given inGeändert von mccoke (10.05.07 um 11:37 Uhr)
-
10.05.07 11:29 #14Versuch es mal so.PHP-Code:
$stmt = $dbh->prepare("SELECT BESTAND FROM TABELLE WHERE ARTIKEL= :artnr ");
$stmt->bindParam(':artnr', $artnr, PDO::PARAM_STR, 12);
KIDS Kinderbetreuungsdienst
Xing
"When you play the game of thrones, you win or you die. There is no middle ground."
by Cersei Lannister in "A Game Of Thrones"
-
funktioniert auch nicht
Ähnliche Themen
-
split() liefert kein Ergebnis
Von Thomas D im Forum PHPAntworten: 3Letzter Beitrag: 29.08.10, 10:21 -
Ldap Abfrage liefert kein Ergebnis
Von angelozehr im Forum PHPAntworten: 0Letzter Beitrag: 31.10.08, 16:00 -
C# SELECT liefert kein Ergebnis
Von Deletemaster im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 05.02.07, 08:24 -
mysql_affected_rows liefert kein Ergebnis
Von helaukoenig im Forum PHPAntworten: 4Letzter Beitrag: 21.11.05, 16:05 -
SQL-Abfrage an ODBC liefert kein Ergebnis
Von vogtländer im Forum PHPAntworten: 2Letzter Beitrag: 06.08.04, 10:24





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren