PDO Prepared Statement - Zugriff auf Oracle liefert kein Ergebnis

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PDO Prepared Statement - Zugriff auf Oracle liefert kein Ergebnis

    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
    dann zeig mal var_dump()s von $dbh, errorInfo(), $row und $stmt. was passiert, wenn du das fragezeichen einfach manuell durch die nummer ersetzst? (kannst bind dann weglassen).

    Kommentar


    • #3
      Sorry, das ich erst so spät schreibe. Hier meine Ergebnisse:

      PHP-Code:
      var_dump($stmt): 
      object(PDOStatement)#2 (1) { ["queryString"]=> string(60) "SELECT BESTAND FROM TABELLE WHERE ARTIKEL = '?' " }

      PHP-Code:
      var_dump($row); 
      bool(false)

      PHP-Code:
       var_dump($dbh); 
      object(PDO)#1 (0) { } bool(false)

      PHP-Code:
      errorInfo(); 
      gibt nichts aus!


      MfG

      Mc Coke

      Kommentar


      • #4
        definiere $artnr als eine zahl und nicht als string. und rufe bindParam so auf, dass als datentyp int angegeben wird.

        und errorInfo / errorCode sind methoden deines pdo-objektes.

        auf was ist error_reporting gesetzt?

        Kommentar


        • #5
          Ich habe error_reporting auf:

          E_ALL & ~E_NOTICE & ~E_Strict

          stehen.

          Mit den Datentypen INT funktioniert es leider auch nicht.

          MfG

          Mc Coke

          Kommentar


          • #6
            stelle es auf E_ALL.

            und zeig mal, was du tust. "geht nicht" kannst du dir sparen.

            vor allem var_dump des statements.

            Kommentar


            • #7
              So,

              error_reporting steht jetzt auf E_All. Wenn ich folgendes ausführe, bekomme ich leider immer noch keine Fehlermeldung:

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

              if (
              $stmt->execute()) {
                   while (
              $row $stmt->fetch()) {
                           
              print_r($row);
                      }
              }

              $dbh null;

              } catch (
              PDOException $e) {
              print 
              "Error!: " $e->getMessage() . "<br/>";
              die();

              PHP-Code:
              var_dump($stmt); 
              liefert folgendes:

              object(PDOStatement)#2 (1) { ["queryString"]=> string(61) "SELECT BESTAND FROM TABELLE WHERE ARTIKEL=?" }

              Kommentar


              • #8
                Gib doch mal nen Typ an - PDO::PARAM_INT (und die Zahl als Integer). Es wird nichts ausgeben? Warum zerstörst du das Objekt?
                Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                Kommentar


                • #9
                  Nein, ich bekomme gar nichts ausgegeben!

                  Mit
                  PHP-Code:
                  $stmt->bindParam(':atl'$item_namePDO::PARAM_STR
                  12); 
                  funktionierts leider auch nicht.

                  Mit
                  PHP-Code:
                  $dbh=NULL
                  schließe ich die Verbindung zur Datenbank.


                  MfG

                  Mc Coke

                  Kommentar

                  Lädt...
                  X