Ankündigung

Einklappen
Keine Ankündigung bisher.

PDO Daten als Array verwenden

Einklappen

Neue Werbung 2019

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

  • PDO Daten als Array verwenden

    Hallo Experten,
    bin dabei meine apps von ASP auf PHP umzustellen, da ASP 2022 eingestellt wird und ich schon 69 bin.
    Hab zunächst begonnen, auf die Daten wie in ASP zuzugreifen (siehe code Teil1). Ging gut und ich konnte auf die Daten mittels Index zugreifen. Doch dann hab ich gelesen, dass das nicht sicher ist und hab auf prepeard statement umgestellt, doch nun kann ich nicht mehr mittels Index zugreifen, was ich aber brauche.
    Was mach ich dabei falsch???

    Code:
    $kunde = (isset($_REQUEST["kunde"])?$_REQUEST["kunde"]:"");
    // das ist die erste Version geht gut
    $sql = "select * from kunden where id =".$kunde;
    foreach ($pdo->query($sql) as $daten) {
    }
    echo $daten[1]." ".$daten['Ort']."<br />";
    
    // dann dies
           $sql = "SELECT * FROM kunden WHERE id = :username";
        $stmt = $pdo->prepare($sql);
        $stmt->bindValue(':username', $kunde);
        $stmt->execute();
        $daten= $stmt->fetch(PDO::FETCH_ASSOC);
        if($daten === false){
            die('Incorrect username!');
        }
        echo $daten[1]." ".$daten['Ort']."<br />";
        // hier kommt der Fehler, dass er nicht über Index zugreifen kann
    Danke für einen Tipp und Grüße aus Salzburg

  • #2
    Zitat von gutu Beitrag anzeigen
    bin dabei meine apps von ASP auf PHP umzustellen
    Warum PHP? Wäre es nicht sinnvoller auf ASP.NET umzustellen?

    Kommentar


    • #3
      Weil du jetzt ein assoziatives Array zurückbekommst. Über dieses solltest du dann mit foreach iterieren. Schau es dir einfach mal mit var_dump an.
      sorry, shift-taste kaputt

      Kommentar


      • #4
        @Hellbringer: Danke für die raschen Antworten. Hab mich natürlich auch mit ASP.net beschäftigt, bin aber zu dem Entschluss gekommen, dass PHP wesentlich ähnlicher zum ASP classic und Javascript ist und ich mit 69 den leichteren Weg gehen will. Habe auch gelesen, dass mySQL mittlerweile dem MSSQL Server überlegen ist. Stimmt das?
        @Meister1900: Zur Info warum ich über die Indices arbeiten muss. Ich habe Tabellen mit über 100 Feldern, die ich zu Beginn von mySQL in eine JS-Array übertragen muss. Die weitere Logik geschieht lokal mit jQuery. Daher fange ich mit den Namen nichts an. Hab mir var_dump angesehen aber mein Problem noch nicht damit lösen können. Für einen tipp würde ich mich freuen.

        Kommentar


        • #5
          Zitat von gutu Beitrag anzeigen
          . Ich habe Tabellen mit über 100 Feldern, die ich zu Beginn von mySQL in eine JS-Array übertragen muss. [/I]
          Wie sehen die Tabellen und die Feldnamen denn aus? Poste mal dazu den SQL-Code für ein Create. Hast du etwa durchnummerierte Spaltennamen?

          Kommentar


          • #6
            Mit $stmt->fetch(PDO::FETCH_ASSOC); lwerden die Daten als assoziatives Array übertragen.

            Es gibt aber auch noch andere Möglichkeiten wie FETCH_NUM oder FETCH_BOTH.
            Schau dir an was für dich am Sinnvollsten ist.

            Var_dump ist für die Ausgabe von Variablen gedacht weil echo dafür ungeeignet ist.

            Kommentar


            • #7
              Ganz herzlichen Dank!!
              FETCH_BOTH ist genau das was ich benötige. Da muss ich wohl noch viel lernen....

              Kommentar


              • #8
                SELECT * ist böse und sollte nicht verwendet werden.

                Und warum verwendest du gleichzeitig deinen nummerischen Index und einen assoziativen Index?

                Es gibt eigenltich keinen Grund FETCH_BOTH zu verwenden, da hier die Daten unnötig doppelt übertragen werden. Entscheide dich für eine Variante, entweder FETCH_ASSOC oder FETCH_NUM und zieh das konsequent durch.

                Kommentar


                • #9
                  danke für den Tipp!

                  Kommentar

                  Lädt...
                  X