Ankündigung

Einklappen
Keine Ankündigung bisher.

DB-Ausgabe funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • DB-Ausgabe funktioniert nicht

    Ich möchte mich mit einer ähnlichen Frage Fabian3081 anschließen.
    Seit Tagen komme ich nicht weiter.
    Die Datenbankverbindung zu Postgresql steht. Mit Query hatte ich auch keinerlei Probleme Daten abzurufen.
    Die hier genannten Seiten, Tutorials, Dokus habe ich gelesen (und noch viele mehr). Trotz allem passiert bei meinem folgendem Code - nix! Nicht mal eine Fehlermeldung.

    Über Prepared Statements wollte ich in die Abfrage eine Variable einbauen (später via Post aus einem Formular).

    Der Code hier ist nur eine Variante:

    PHP-Code:
    <?php

    try {
    $pdo = new PDO('pgsql:host=localhost;dbname=postgres','postgres','meinpasswort');
    $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXEPTION);

    //Variable
    $plz '10827';

    //Abfrage
    $sql "SELECT bereich, adresse, plz, stadt FROM biz_dtl WHERE plz = ? ";
    $stmt $pdo->prepare($sql);

    //Ausgabe
    $stmt->execute(array($plz));
    while (
    $row $stmt->fetch()) {
    echo 
    "<b>BIZ " $row['bereich'] . "</b>" ", ";
    echo 
    $row['adresse'] . ", ";
    echo 
    $row['plz'];
    echo 
    " " $row['stadt'] . "</br>";
    }

    $pdo null;

    } catch(
    PDOException $e){
    echo 
    $e->getMessage();
    die();
    }

    ?>

  • #2
    Hallo!

    Bitte einen neuen Betrag für ein neues Thema erstellen, nicht alte kapern. Danke! Ich hab das mal gemacht.

    MOD: Beitrag in neues Thema abgetrennt.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Danke Hausl! Dachte es würde gut dazu passen. Auf Kaperfahrt wollte ich nicht sein.
      Viele Grüße,
      Corna

      Kommentar


      • #4
        Zum Thema.. Frag mal $stmt->rowCount ab. Gibt es überhaupt einen Datensatz den du abfragst? Bzw. lass die Query mal direkt auf der DB laufen
        Code:
        SELECT bereich, adresse, plz, stadt FROM biz_dtl WHERE plz = 10827
        Gibt es da ein Ergebnis?
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Ein guter Einwand. Ich war so sehr mit dem ganzen PDO-Prozedere beschäftigt, dass ich die beiden Datenbänke verwechselt habe. Das habe ich angepasst. Aber Ergebnisse bekomme ich nicht. Der Datensatz zu plz = 10827 ist übrigens vorhanden.

          PHP-Code:
          <?php

          try {
          $pdo = new PDO('pgsql:host=localhost;dbname=postgres','postgres','meinpasswort');
          $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXEPTION);

          //Variable
          $plz '10827';

          //Abfrage
          $sql "SELECT plz, note FROM plz_centroid WHERE plz = ? ";
          $stmt $pdo->prepare($sql);

          //Ausgabe
          $stmt->execute(array($plz));
          while (
          $row $stmt->fetch()) {
              echo 
          "<b>" $row['plz'] . "</b>" ", ";
                echo 
          " " $row['note'] . "</br>";
          }

          $pdo null;

          } catch(
          PDOException $e){
              echo 
          $e->getMessage();
              die();
          }

          ?>
          Die spätere, eigentliche Abfrage soll auf eine funktionierende Postgis-Abfrage abzielen (also sie funktioniert, wenn ich sie direkt in der Datenabnk ausführe) .
          PHP-Code:
          $sql " SELECT
            a.Bereich,
            a.adresse,
            a.plz,
            a.stadt
          FROM
            biz_dtl AS a, plz_centroid AS b
          ORDER BY
            a.geom <->
            (SELECT plzcentro FROM plz_centroid WHERE plz = 10827)
          LIMIT 1"

          Kommentar


          • #6
            Ah .. Ich denke du mußt noch die Parameter "binden" oder named Parameter verwenden.

            Mach mal so:
            PHP-Code:
            //Abfrage
            $sql "SELECT plz, note FROM plz_centroid WHERE plz = :plz ";  ## hier was geändert
            $stmt $pdo->prepare($sql);

            //Ausgabe
            $stmt->execute( array('plz' => $plz) );  ## hier was geändert 
            Sonst schau das mal das Bsp hier an: https://php-de.github.io/jumpto/pdo/
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              zur 2. Abfrage werde ich mir das hier noch mal zu Gemüte führen:
              https://gis.stackexchange.com/questi...s-with-pdo-php

              Kommentar


              • #8
                zu #6: ich dachte, das hätte mit der anderen Methode ('?') erledigt.

                Kommentar


                • #9
                  Was auch immer du meinst..

                  Funktioniert es nun? Versuch es einfach mal so. Oder schau dir hier die Doku an, da stehs auch nochmals, gleich oben nach dem Code-Kasten: http://php.net/manual/de/pdostatement.execute.php
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Aber Ergebnisse bekomme ich nicht. Der Datensatz zu plz = 10827 ist übrigens vorhanden.
                    Das ist ein Widerspruch. Wenn du in der Datenbank die Query laufen lässt, bekommst du dort eine Ausgabe ja oder nein. Direkt auf der DB, ohne PHP?

                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Ich meinte die Verwendung eines positional ('?') placeholders anstelle eines named ( ': plz') placeholders (https://phpdelusions.net/pdo#query).
                      Hat weiterhin nicht funktioniert.
                      Ich habe auch schon mein System getestet, ob da alles richtig funktioniert. Alle Angaben bestätigen das aber und einfache Queries ohne Parameterübergaben auch. Trotzdem probiere ich es nochmal auf einem anderen System.
                      Bis hierhin aber schon mal Danke, hausl.

                      Kommentar


                      • #12
                        zu #10: in der Tabelle 'plz_centroid' ist der Datensatz vorhanden. In der Tabelle 'biz_dtl' nicht - aber die Spalten stimmen. Ergo kann dort kein Ergebnis kommen.
                        Habe jetzt eine in biz_dtl wirklich vorhandene PLZ genommen und nochmal den alten Code und Deinen Vorschlag ausprobiert. Immer noch nix. Nur ein kleiner Hinweis auf Leben: ich hatte erst das falsche Passwort benutzt und bekam eine Fehlermeldung

                        Kommentar


                        • #13
                          Ich bin zwar noch nicht weiter, aber ich bin jetzt mal auf den Trichter gekommen in der php.ini das Error Reporting zu aktivieren und schon ein paar interessante Einblicke bekommen. Wenn ich der Lösung näher, bin werde ich das hier dokumentieren.

                          Kommentar


                          • #14
                            Habe den Code noch mal etwas bzgl der Abfrage, Datenbank und Ausgabe angepasst.
                            Sowohl "Deine", hausl (: plz), und meine ('?') Methode funktionieren jetzt.

                            Durch das Error Reporting bekam ich jetzt den Hinweis, wo's hakte: nach der Datenbankanbindung ist mein setAttribute wohl noch unsinnig. Habe es erstmal kommentiert.

                            Hier die Fehleranzeige:
                            PHP-Code:
                            Fatal errorUncaught ErrorUndefined class constant 'ERRMODE_EXEPTION' in /var/www/html/pdo01a.php:5 Stack trace#0 {main} thrown in /var/www/html/pdo01a.php on line 5 
                            Hier die jetzt funktionierende Abfrage:
                            PHP-Code:
                            <?php

                            try {
                            $pdo = new PDO('pgsql:host=localhost;dbname=postgres','postgres','meinpasswort');
                            //$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXEPTION);


                            //Abfrage
                            $sql "SELECT bereich, adresse, plz, stadt FROM biz_dtl WHERE plz = :plz ";
                            $stmt $pdo->prepare($sql);
                            //Variable
                            $plz '23843';

                            //Ausgabe
                            $stmt->execute(array(':plz' => $plz));
                            while (
                            $row $stmt->fetch()) {
                            echo 
                            "<b>BIZ " $row['bereich'] . "</b>" ", ";
                            echo 
                            $row['adresse'] . ", ";
                            echo 
                            $row['plz'];
                            echo 
                            " " $row['stadt'] . "</br>";
                            }

                            $pdo null;

                            } catch(
                            PDOException $e){
                            echo 
                            $e->getMessage();
                            die();
                            }

                            ?>

                            Kommentar


                            • #15
                              Es heißt ja auch EXCEPTION und nicht EXEPTION.

                              Warum schaust du nicht im PHP-Handbuch nach?

                              http://php.net/manual/de/pdo.setattribute.php

                              Kommentar

                              Lädt...
                              X