[SQL] INSERT INTO mit 'id'-Spalte und auto_increment

Dieses Thema im Forum "Webentwicklung" wurde erstellt von joker.org, 22. Januar 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 22. Januar 2010
    INSERT INTO mit 'id'-Spalte und auto_increment

    Hallo Leute,

    ich brauche eure Hilfe.
    Ich habe eine Datenbank mit 6 Spalten und eine davon ist die 'id'-Spalte mit auto_increment.

    Jetzt habe ich ein Formular erstellt, welches Daten in die Datenbank sendet, was auch einwandfrei funktioniert.

    Jedoch werden nur die hinteren 5 Spalten eingetragen, da es beim auto_increment noch hakt.
    Diese Spalte ist immer leer.
    Es klappt soweit alles bis auf die 1. Spalte.

    Was muss ich an dem Code verändern?

    Code:
    $sql = "INSERT INTO `tabelle` (`id`, `name`,`username`,`password`, `fach1`, `fach2`,`fach3`)
     VALUES ('NULL', '".$_POST['name']."', '".$_POST['username']."', '".md5($_POST['password'])."', '".$_POST['fach_1']."', '".$_POST['fach_2']."', '".$_POST['fach_3']."');";
    

    Vielen Dank im Voraus.

    Gruß joker.org
     
  2. 22. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    lass die id-spalte aus der query raus:
    PHP:
    <? php
    $sql 
    "INSERT INTO `tabelle` (`name`,`username`,`password`, `fach1`, `fach2`,`fach3`)
                        VALUES ('"
    . $_POST [ 'name' ]. "', '" . $_POST [ 'username' ]. "', '" . md5 ( $_POST [ 'password' ]). "', '" . $_POST [ 'fach_1' ]. "', '" . $_POST [ 'fach_2' ]. "', '" . $_POST [ 'fach_3' ]. "')" ;
    ?>
     
  3. 22. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    Wenn du die Spalte NULL setzt, kann es nicht funktionieren.
    Man könnte auch sagen: "auto_increment", "auto" wie automatisch Du musst also in dieser Spalte nichts tun. Mit "NULL" setzt nur die Spalte aber bewusst auf "NICHTS".

    PS: Überleg dir noch was zum Thema Sicherheit, falls du die Daten nicht abfrägst. mysql_real_escape oder ähnliches ist sinnvoll
     
  4. 23. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    ist deine ID spalte auch der primary key?

    bei mir funktioniert es auch wenn ich die id spalte mit null fülle

    und wenn du immer die ganzen felder der Tabelle füllst kannst du auch die anweisung so schreiben

    Code:
    INSERT INTO tabelle VALUES(Wert 1, Wert 2 , Wert 3, Wert 4, Wert 5) 
    
    muss halt die reinfolge aus der tabelle sein
     
  5. 23. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    Die ID-Spalte sollte sowieso NOT NULL sein ?(
     
  6. 24. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    Yupp AutoInc Felder sind Primary Keys, und wenn du für dieses Feld NULL insertest oder es gleich komplett aus der Liste weg lässt wird der nächstfreie Wert eingetragen.

    BTW ist es nicht sehr schlau gerade aus Conviniencegründen die Feldernamen wegzulassen.
     
  7. 24. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    nur aus bequemlichkeit? oder steckt da auch was sicherheitstechnisches dahinter, wieso man die spaltennamen angeben sollte?

    mfg
     
  8. 24. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    Jo, z.B. wenn jemand was an der Tabelle ändert oder einfach aus Lesbarkeit?
     
  9. 24. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    ja, aber sicherheitstechnische aspekte verstecken sich da nicht dahinter?
     
  10. 24. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    Vielleicht meint er ja auch nur "sicher" im Sinne von sicher das es im richtigen Feld ankommt. ;-)
    Finde auch das man die Feldnamen angeben sollte. Ist einfach ein sauberer Programmierstil.
     
  11. 25. Januar 2010
    AW: INSERT INTO mit 'id'-Spalte und auto_increment

    Hi,
    also ich habe es jetzt hinbekommen.
    Habe außerdem noch mysql_real_escape hinzugefügt.

    Danke euch allen.

    Gruß joker.org
     
  12. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.