Fragen zu PDO Klasse

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

  • #16
    FALSE wird nur im Fehlerfall zurückgegeben. Steht aber auch im PHP Handbuch.

    Kommentar


    • #17
      Zitat von mo78 Beitrag anzeigen
      Was mich jetzt iwie verwirrt ist das var_dumb mir true ausspuckt.
      Sollte execute mir nicht ein False zurückgeben ???
      Nein, sollte es natürlich nicht.

      Eine Abfrage, die einfach nur kein Ergebnis liefert, ist nichts desto trotz technisch vollkommen fehlerfrei. Und nicht mehr als das drückt der Rückgabewert von execute aus.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #18
        Okay, da ich ja nur prüfen will ob es schon einen eintrag gibt ist wohl exec() die bessere wahl?

        Nur da kommt dann schon die nächsten probleme

        Hier mal meine erste Abfrage
        PHP-Code:
           $id 1;
           
        $sql "SELECT eintrag FROM table WHERE id=".$id;
           
        $check $pdo->exec($sql); 
        Hier bekomme ich immer den Fehler
        Column not found: 1054 Unbekanntes Tabellenfeld 1
        So und das ist die 2. Abfrage
        PHP-Code:
        // Das funktioniert
        $para = array(':plz'=>$_POST['plz'],
                           
        ':ort'=>$_POST['ort']);
                   
        $sql "INSERT INTO orte (plz,ort) VALUES (:plz, :ort)";
                   
        $this->stmt $this->pdo->prepare($sql);
                   
        $this->stmt->execute($para);

        //Und das funktioniert nicht
        $para = array(':straße'=>$_POST['strasse'],
                           
        ':hausnummer'=>$_POST['hausnr']);
                  
        $sql "INSERT INTO anschriften (straße, hausnummer) VALUES       (:straße, :hausnummer)";
                  
        $this->stmt $this->pdo->prepare($sql);
                  
        $this->stmt->execute($para);//in der Zeile kommt die Fehlermeldung 
        Die 2. Fehlermeldung
        SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'
        Hmm und iwie komme ich da überhaupt garnicht mehr weiter.
        Schonmal besten Dank
        mfg
        mo

        Kommentar


        • #19
          Sonderzeichen in Spaltennamen solltest du am besten gleich mal ganz sein lassen. Das bringt auf lange Sicht nur Ärger.

          Kommentar


          • #20
            Alles klar sonderzeichen sind gestrichen
            und die 2 Abfrage funzt dann auch.

            besten Danke
            mfg
            mo

            Kommentar


            • #21
              So hänge mal wieder bei meinen PDO experimenten fest und komme iwie nicht weiter.

              Ich haben folgendes update STatement
              PHP-Code:
              $para = array(':gebID'=>$gebID,
                                       
              ':codeID'=>$codeID,
                                       
              ':selbstID'=>$selbstID,
                                       
              ':emaiID'=>$emailID,
                                       
              ':picID'=>$piclink_id,
                                       
              ':nameID'=>$nameID);
                         
              $sql "UPDATE pa_namen SET geb_id = :gebID,
                                                    code_id = :codeID,
                                                  selbst_id = :selbstID,
                                                   email_id = :emailID,
                                                     pic_id = :picID
                                         WHERE id_namen = :nameID"
              ;
                         
              $this->stmt $this->pdo->prepare($sql);
                         
              $insert $this->stmt->execute($para); 
              und bekomme immer für die letzt Zeile folgende Fehlermeldung
              Code:
               SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in /var/
              schonmal besten Dank
              mfg
              mo

              Kommentar


              • #22
                Bist du ganz sicher, dass die Fehlermeldung zum geposteten Code gehört? Hast du Dateiname und Zeilennummer der Fehlermeldung überprüft?

                Tipp: Wenn du statt mit dem Array mit mehreren bindParam-Aufrufen arbeitest, bekommst du im Fehlerfall gleich noch den Parameter heraus, mit dem etwas nicht stimmte.
                Zuletzt geändert von AmicaNoctis; 15.09.2011, 14:49.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #23
                  Also die Zeile zur Fehlermeldung ist die Richtige, aber werd das mal mit binds probieren und dann nochmal meldung machen

                  Kommentar


                  • #24
                    So also mit bind Parameters funktioniert das ganze, jetzt würd mich natürlich noch interesieren warum.

                    Kommentar


                    • #25
                      Kann ich dir inzwischen sagen – ich hab's auch erst jetzt entdeckt. Du hast [FONT="Courier New"]emaiID[/FONT] statt [FONT="Courier New"]emai[COLOR="Red"]l[/COLOR]ID[/FONT] geschrieben. Solche Tippfehler erkennt man i. d. R. mit bindParam schneller, weil er dann gleich eine Zeilennummer zum Meckern hat und nicht erst auf execute warten muss.
                      Zuletzt geändert von AmicaNoctis; 15.09.2011, 15:39.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #26
                        Oh man böse Falle l u. I
                        welcher variante ist denn vorzuziehen array oder bindparam?

                        Kommentar


                        • #27
                          Das ist vom Anwendungsfall und z. T. auch vom Geschmack abhängig. Wenn es um Stored Procedures geht, ist bindParam klar im Vorteil, weil es auch out- und inout-Parameter unterstützt, für Select-, Insert-, Update- und Delete-Statements ist es aber im Grunde egal. Ich nutze immer bindParam.
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar

                          Lädt...
                          X