Dodwin: MySQL - INSERT mit aktuellem AUTO_INCREMENT-Wert

Hallo,

Ich möchte gerne die aktuelle ID in die Tabelle miteinfügen.
Also bedeutet:

$q = "INSERT INTO user
(feld)
VALUES
('Nr '.ID)";
       ^^

Da wo jetzt noch ID steht soll also die ID hinkommen, die durch den Eintrag entsteht, also der nächste AUTO_INCREMENT-Wert.

Durch Suchen habe ich mittlerweile rausgefunden, dass es mit SHOW TABLE STATUS möglich ist den AUTO_INCREMENT-Wert abzufragen, aber lieber wäre es mir wenn es anders ginge.

Gruß,
Dodwin

--
Dodwin
  1. echo $begrüßung;

    Durch Suchen habe ich mittlerweile rausgefunden, dass es mit SHOW TABLE STATUS möglich ist den AUTO_INCREMENT-Wert abzufragen, aber lieber wäre es mir wenn es anders ginge.

    PHP: mysql_insert_id()
    MySQL: LAST_INSERT_ID()

    echo "$verabschiedung $name";

    1. Hallo dedlfix,

      PHP: mysql_insert_id()
      MySQL: LAST_INSERT_ID()

      Beides ist mir bekannt und beides bezieht sich nur auf die aktuelle Sitzung und einen vorher eingefügten Eintrag und hilft mir somit nicht weiter.

      Gruß,
      Dodwin

      --
      Dodwin
  2. Huhu,

    alsoooo soweit mein MySql und Php wissen geht, ist es, wie du schon sagtest, ein Auto Increment, wenn dieses auch so in der Datenbank eingestellt ist reicht folgendes:

    $q = "Insert Into user('username') values('testuser')";

    Die Id wird beim Eintragen automatisch von der Datenbank generiert.

    Sollte das nicht der Fall sein, kannst du ja vorher ein Select abschießen:

    $q = "SELECT max(.id) FROM User"

    achso, sollte User eine Table sein in die du eigene Benutzer eintragen möchtest, so rate ich dir dazu da einen anderen Namen zu verwenden, denn es gibt in den meisten Datenbanken diese Tabelle bereits und zwar stehen da die User und die Zugriffsrechte für die Datenbank drin

    mfg der Heakl

    1. Hallo Heakl,

      Die Id wird beim Eintragen automatisch von der Datenbank generiert.

      Ja. Und die ID, die von der Datenbank generiert wird will ich auch noch in ein anderes Feld schreiben und nicht nur ins ID-Feld.

      $q = "INSERT INTO user
      (feld)
      VALUES
      ('Nr '.ID)";

      Sagen wir mal der AUTO_INCREMENT-Wert ist 5, dann soll die 5 einmal in das ID-Feld geschrieben werden und in das feld mit dem Namen "feld" soll "Nr 5" geschrieben werden.

      $q = "SELECT max(.id) FROM User"

      Das wäre natürlich eine Möglichkeit aber auch wieder nur durch ein Umweg...
      Ich hatte gehofft es ginge direkt.

      achso, sollte User eine Table sein in die du eigene Benutzer eintragen möchtest, so rate ich dir dazu da einen anderen Namen zu verwenden, denn es gibt in den meisten Datenbanken diese Tabelle bereits und zwar stehen da die User und die Zugriffsrechte für die Datenbank drin

      OK. Danke der Information.

      Gruß,
      Dodwin

      --
      Dodwin
  3. Hallo Dodwin,

    Zwar nicht ganz so schön wie ich dachte, aber Problem gelöst:

    $q01a = mysql_query("SELECT max(id) as maxid FROM user");
    $q01b = mysql_fetch_assoc($q01a);

    $q01a = "INSERT INTO user
    (feld)
    VALUES
    ('Nr ".($q01b['maxid']+1)."')";
    $q01b = mysql_query($q01a);

    Gruß,
    Dodwin

    --
    Dodwin
    1. Hi,

      Zwar nicht ganz so schön wie ich dachte, aber Problem gelöst:

      $q01a = mysql_query("SELECT max(id) as maxid FROM user");
      $q01b = mysql_fetch_assoc($q01a);

      Nimm mal an, _jetzt_ kommt auf dem Server ein Task-Switch, ein zweiter Request selektiert und fügt ein.
      Jetzt kommt nach einem weiteren Task-Switch Dein Insert, und die id in der Spalte feld zeigt auf den vom anderen Task eingefügten Datensatz.

      $q01a = "INSERT INTO user
      (feld)
      VALUES
      ('Nr ".($q01b['maxid']+1)."')";
      $q01b = mysql_query($q01a);

      Als sichere(re) Lösung fällt mir spontan ein:
      insert mit Dummywert in der Spalte feld.
      Dann ein update mit set feld=id

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  4. Moin!

    Hallo,

    Ich möchte gerne die aktuelle ID in die Tabelle miteinfügen.
    Also bedeutet:

    $q = "INSERT INTO user
    (feld)
    VALUES
    ('Nr '.ID)";
           ^^

    Du kannst das jederzeit bein Abfragen machen. Beim Eintragen macht Dein Vorgehen alles außer Sinn, schon deswegen weil Du Grundregeln (Normalisierung) verletzt.

    Ein

    SELECT CONCAT('Nr. ',id) FROM user;

    behebt Dein Problem beim Auslesen. Und das ist gut so.

    http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Hallo fastix®,

      Du kannst das jederzeit bein Abfragen machen. Beim Eintragen macht Dein Vorgehen alles außer Sinn, schon deswegen weil Du Grundregeln (Normalisierung) verletzt.

      Das ganze soll aber soetwas wie ein Name sein. Er soll am Anfang eben "Nr. "+ID sein, wird aber später geändert.
      Und da ist es eben am einfachsten einfach nochmal die ID reinzuschreiben, da es ja geändert wird.

      Gruß,
      Dodwin

      --
      Dodwin