[PHP] Mysql Update Befehl

Dieses Thema im Forum "Webentwicklung" wurde erstellt von »The Gr4ndp4, 23. Mai 2011 .

Schlagworte:
  1. 23. Mai 2011
    Mysql Update Befehl

    Hallo,

    ich habe folgenden Update Befehl

    PHP:
    $Updaten  mysql_query ( "UPDATE Vertrag SET Vertragsnummer = " . $_SESSION [ "Vertragsnummer" ]. " WHERE VertragID=" . $_SESSION [ "VertragID" ]. "" );
      
    Der Funktioniert super, nur wenn ich nun mehrer Sachen updaten will, also zB

    PHP:
    $Updaten  mysql_query ( "UPDATE Vertrag SET Vertragsnummer = " . $_SESSION [ "Vertragsnummer" ]. ",Betreff = " . $_SESSION [ "Betreff" ]. " WHERE VertragID=" . $_SESSION [ "VertragID" ]. "" );
      
    Funktioniert es nicht mehr.

    Als Fehler bekomme ich

    Code:
    
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'asd WHERE VertragID=1407' at line 1
    
    Wenn ich das richtig verstehe, heist es doch so viel wie, das der Befehl fehlerhaft ist, ich finde aber irgendwie keinen Fehler
     
  2. 23. Mai 2011
    AW: Mysql Update Befehl

    betreff wird wohl ein string sein
    Code:
    ,Betreff = \"".$_SESSION["Betreff"]."\"
    
     
  3. 23. Mai 2011
    AW: Mysql Update Befehl

    Vertragsnummer und VertragId sind INT, daher stört sich Mysql nicht dran, die weiteren Daten sind aber Strings.

    Das (int) sorgt dafür das die Variable immer INT ist und niemals etwas anderes.
    Betreff ist in Hochkommas gepackt und mit mysql_real_escape_string abgesichert, stichwort: [G]SQL injection[/G]

    PHP:
    $Updaten  mysql_query ( "UPDATE Vertrag SET Vertragsnummer = '" .((int) $_SESSION [ "Vertragsnummer" ]). "',Betreff = '" . mysql_real_escape_string ( $_SESSION [ "Betreff" ]). "' WHERE VertragID='" .((int) $_SESSION [ "VertragID" ]). "'" );
     
  4. 23. Mai 2011
    AW: Mysql Update Befehl

    oh mit (int) in nem ausruck wär ich vorsichtig, nicht dass (int)$_ ... den rest der verkettung castet.

    sonst hast du am ende "UPDATE Vertrag SET Vertragsnummer = 1234" oder so was in der art ^^ also ne klammer drum und auf nummer sicher gehen:
    ((int)$_ ...)

    ------

    mysql_query war gestern, heute verwendet man PDO oder MySQLi und die entsprechenden "bind" methoden. ich kanns nur jedem raten!

    PHP: PDO - Manual
    PHP: Mysqli - Manual
     
  5. 23. Mai 2011
    AW: Mysql Update Befehl

    Ok danke Leute, habt mir echt geholfen.

    @Murdoc
    Danke ich werde mir das mal anschauen
     
  6. 23. Mai 2011
    AW: Mysql Update Befehl

    Das sollte eigentlich nicht passieren, da die Cast-Operatoren in der Operatorenrangfolge höher stehen als der Verkettungsoperator: PHP: Operator-Rangfolge - Manual
     
  7. 23. Mai 2011
    AW: Mysql Update Befehl

    ja ich war mit nicht ganz sicher, ich setz bei sowas gerne mal zuviel klammern als zu wenig
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.