Ankündigung

Einklappen
Keine Ankündigung bisher.

autoincrement zählt hoch obwohl nichts eingetragen wird

Einklappen

Neue Werbung 2019

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

  • autoincrement zählt hoch obwohl nichts eingetragen wird

    Hallo Leute.
    Wenn ich einen neuen KUNDEN in die SQL-DB per Formular hinzufügen möchte, wird per autoincrement die ID jeweils um Eins hochgezählt.
    Ist der Kunde aber schon vorhanden, soll kein neuer angelegt werden. Klappt soweit auch super, jedoch wird die ID immer weitergezählt obwohl ich keinen Kunden eingetragen habe.

    Ich habe folgende Tabelle:
    Kunde => kundenID, kunde (UNIQUE), kundennummer

    Das sieht dann so aus:
    kundenID | kunde| kundennummer
    1 | test1 | 001
    kundenID | kunde| kundennummer
    2 | test2 | 002
    kundenID | kunde| kundennummer
    5 | test3 | 003
    kundenID | kunde| kundennummer
    8 | test4 | 004


    Wenn ich einen Eintrag erstelle wo der Kunde schon in der SQL-DB steht, dann wird komischerweise die ID trotzdem übersprungen. D.h. wird später wieder ein neuer Kunde hinzugefügt wird nicht der letzte Eintrag genommen sondern ein paar ID´s später.

    So sieht ein Schnipsel vom Einfügen aus:

    PHP-Code:
    $insert_kunde mysql_query("INSERT INTO kunde SET
    `kunde`                ='"
    .mysql_real_escape_string($_POST['kunde'])."',
    `kundennummer`        ='"
    .mysql_real_escape_string($_POST['kundennummer'])."'
    ON DUPLICATE KEY UPDATE
    kundenID = LAST_INSERT_ID(kundenID), kundennummer = VALUES(kundennummer)"
    )
    or die (
    "<h2>Datenbank-Error - Fehler beim erstellen des Kunden.</h2>");
    $kundenID mysql_insert_id(); 
    Nicht das mich das jetzt sonderlich stört, aber es sieht nicht schön aus und wirkt später unübersichtlich, aber evtl. gibt es ja Abhilfe dafür.

    Grüße


  • #2
    die KundenID ist doch rein assoziiativ, wozu sollte man das korrigieren wollen ? Löschte nen Kunde, ist da auch nen Loch drin. Kannste irgendwann also nicht vermeiden bei autoincrement-feldern.

    Update lieber mal das script auf PDO oder MySQLi. Die MySQL-Extension von PHP ist veraltet und wird entfernt.
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Alles klar, danke dir. Stört mich jetzt ja auch nicht weiter. Werd mich mit PDO Anfang des Jahres beschäftigen.

      Kommentar


      • #4
        InnoDB zählt für jeden Insert hoch, ob er erfolgreich ist oder nicht spielt keine Rolle. Deshalb entstehen da "Lücken".
        GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

        Kommentar

        Lädt...
        X