tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
2678
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    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:

    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();

    ...mit prepared Statements bekomme ich nun leider überhaupt nichts zurückgeliefert. Weder eine Fehlermeldung noch ein Ergebnis.

    prepared Statement:

    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();

    So, ich hoffe Ihr könnt mir mal wieder weiterhelfen!

    MfG

    Mc Coke
     

  2. #2
    ssurfer ssurfer ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    146
    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?
     

  3. #3
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    Sorry, habe ich falsch reinkopiert....

    Obwohl ich PDOException abfange, erhalte ich kein Fehlermeldung..
     

  4. #4
    ssurfer ssurfer ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    146
    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:

    PHP-Code:
    foreach($stmt->fetch() as $row) {
      
    var_dump($row);

    Probier mal aus u. sag was er ausgibt, falls es Online ist kannst du ja auch die URL mal angeben.
     

  5. #5
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    PHP-Code:
          print_r($stmt); 
    liefert folgendes:


    PDOStatement Object ( [queryString] => SELECT BESTAND FROM TABELLE WHERE Artikel= ?)


    mit

    PHP-Code:
    foreach($stmt->fetch() as $row) {
      
    var_dump($row);

    liefert er folgende Fehlermeldung:


    PHP-Code:
    WarningInvalid argument supplied for foreach() 
    Ich denke mal, dass fetch() kein Ergebnis liefert und deshalb die Fehlermeldung kommt.

    Ich bin in einer lokalen Testumgebung... steht also leider nicht online
     

  6. #6
    ssurfer ssurfer ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    146
    Dein fetch() liefert dir kein Array, deshalb kommt dieser Fehler.

    Gib mal noch $stmt->execute(); aus, was er da liefert.
     

  7. #7
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    PHP-Code:
    $stmt->execute(); 
    liefert eine 1.
     

  8. #8
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    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"

  9. #9
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    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.
     

  10. #10
    ssurfer ssurfer ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    146
    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.
     

  11. #11
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    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"

  12. #12
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    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...
     

  13. #13
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    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'$artnrPDO_PARAM_STR12);
            
          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 in
    Geändert von mccoke (10.05.07 um 11:37 Uhr)
     

  14. #14
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    PHP-Code:
    $stmt $dbh->prepare("SELECT BESTAND FROM TABELLE WHERE ARTIKEL= :artnr ");
            
    $stmt->bindParam(':artnr'$artnrPDO::PARAM_STR12); 
    Versuch es mal so.
     
    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"

  15. #15
    mccoke mccoke ist offline Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    16
    funktioniert auch nicht
     

Ähnliche Themen

  1. split() liefert kein Ergebnis
    Von Thomas D im Forum PHP
    Antworten: 3
    Letzter Beitrag: 29.08.10, 10:21
  2. Ldap Abfrage liefert kein Ergebnis
    Von angelozehr im Forum PHP
    Antworten: 0
    Letzter Beitrag: 31.10.08, 16:00
  3. C# SELECT liefert kein Ergebnis
    Von Deletemaster im Forum .NET Windows Forms
    Antworten: 2
    Letzter Beitrag: 05.02.07, 08:24
  4. mysql_affected_rows liefert kein Ergebnis
    Von helaukoenig im Forum PHP
    Antworten: 4
    Letzter Beitrag: 21.11.05, 16:05
  5. SQL-Abfrage an ODBC liefert kein Ergebnis
    Von vogtländer im Forum PHP
    Antworten: 2
    Letzter Beitrag: 06.08.04, 10:24