Ankündigung

Einklappen
Keine Ankündigung bisher.

PDO Prepared mit placeholders

Einklappen

Neue Werbung 2019

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

  • PDO Prepared mit placeholders

    Hallo an alle.

    meine Frage ist wo ich meinen Fehler habe.

    Ich versuche ein Update in einer Tabelle zu machen und zwar so:

    PHP-Code:
    $update "UPDATE people SET Name=?, Age=? WHERE PersonId=? VALUES (?, ?, ?)";
          
    $db = new db();
          
    $db->prepare($update);
          
    $db->bindParam(1$name);
          
    $db->bindParam(2$age);
          
    $db->bindParam(3$personid);
          
    $db->execute(); 
    hinter $db->prepare($update); ist:
    PHP-Code:
    public function prepare($query)
       {
          
    self::$stmt self::$PDOInstance->prepare($query);
       } 
    und hinter $db->execute() ist:
    PHP-Code:
    public function execute()
       {
          
    self::$stmt->execute();
       } 
    diese Methoden sind einer SQL Klasse ausgelagert.

    Als Fehler bekomme ich:
    SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

    Ich habe aber doch 3 Placeholders wieso soll das falsch sein?

    Und ich möchte es auf jeden fall wenn es geht mit den Positional Placeholders machen.

    Hat jemand eine Idee wo mein Fehler ist?

    Gruß
    René

  • #2
    Ein Fragezeichen steht für ein Platzhalter und du hast Fragezeichen in deinem Query. Ich weiß aber auch nicht was VALUES in dem Query zu suchen hat...

    Kommentar


    • #3
      PHP-Code:
      $update "UPDATE people SET Name=?, Age=? WHERE PersonId=?";
            
      $db = new db();
            
      $prepare $db->prepare($update);
            
      $prepare->bindParam(1$namePDO::PARAM_STR);
            
      $prepare->bindParam(2$agePDO::PARAM_INT);
            
      $prepare->bindParam(3$personidPDO::PARAM_INT);
            
      $prepare->execute(); 
      Kann es bloß gerade nicht testen.

      Kommentar


      • #4
        Als Info, du kannst es auch so machen, ev. tust du dir dann ja leichter. Ich findes es jedenfalls so angenehmer: https://php-de.github.io/jumpto/pdo/#with-param oder hier: https://www.php-rocks.de/thema/49-ei...tatements.html
        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
          diese Methoden sind einer SQL Klasse ausgelagert.
          Ja und zwar in der PDO Klasse.

          Kommentar


          • #6
            Vielen Dank für die Hilfe.
            Warum ich Value drinn hatte weiß ich nun auch nicht mehr aber es gehört da nicht hin.

            Gruß
            René

            Kommentar

            Lädt...
            X