2016-09-28 12 views
0

Was ist der beste Weg, oder, wie würden Sie tun, um ein Feld in PHP + SQL als AB00000 formatiert, wo der erste eingefügt werden sollte AB00001 und so weiter. Ich habe eine Webseite in PHP + SQL, um ein Formular zu erstellen und es in eine Tabelle einzufügen, in der eine der Spalten die "reference_nr" ist und mein gesamter Code bereits mit der ID (AutoIncrement) erstellt wurde dieser Tisch.Autoinkrement Wert in PHP

Was ich brauche, wäre etwas, das immer die zuletzt verwendete vielleicht zu einer anderen Tabelle schreiben würde und vor INSERT in Forms Tabelle WÄHLTE ich den letzten Wert und inkrementiere + 1 und INSERT mit dem Ergebnis dieser mathematischen Operation.

  • Benötige ich eine andere Tabelle oder kann ich direkt aus der Tabelle des Formulars auswählen?
  • Glaubst du, es gibt mir Probleme, wenn zwei Personen versuchen, das Formular gleichzeitig einzufügen?
+2

Vielleicht eine Standard-Auto-Increment-Spalte verwenden zu vermeiden im backing storage aber einfach die * display * des Bezeichners auf die angegebene Breite mit dem angegebenen Präfix formatieren? – David

+0

Oder verwenden Sie 2 Abfragen: 1st) INSERT Benutzer in db und die ID ($ mysqli-> insert_id); 2.) UPDATE-Benutzer, um ihm den richtigen AB00 zu geben ... basierend auf der ID. – verjas

+0

mysql kann nur ganzzahlige Autoinkrementwerte erstellen. Es werden keine zusammengesetzten Werte/Zeichenfolgen für Sie erstellt. Sie könnten jedoch einen Post-Insert-Trigger verwenden, um diesen zusammengesetzten Wert in einem anderen Feld in der Tabelle zu erstellen. –

Antwort

0

Wenn Ihr Problem ist, wie ein Autoincrement-Wert erhalten für eine Zeichenfolge-Spalte mit Präfix wie AB00000, Autoinkrement-Felder sind nur numerisch. Wenn das Feld ein festes Format hat, können Sie einen einfachen Einsatz mit dem id-Wert von erstellen:

SELECT CONCAT('AB', LPAD(MAX(SUBSTRING(id,3)+1 ,5,'0') from table 

Und diesen Wert direkt in Ihrem Einsatz verwenden, um Transaktions Probleme

1

SQL bringt das schon mit ihm:

Verwenden Sie die SQL-Funktion LAST_INSERT_ID() ähnlich dem Beispiel in der Quellseite ich Sie unten verlinkt. Lassen Sie uns Tabelle foo hat eine autoincrement Feld "id" annehmen:

INSERT INTO 
    foo (auto, text, somevalue) 
VALUES 
    (NULL,'text', 2);   # id was generated hoer 

Dann Sie tun:

UPDATE 
    foo 
SET 
    somevalue = somevalue + 1 
WHERE 
    id = LAST_INSERT_ID() 

Quelle: http://dev.mysql.com/doc/refman/5.7/en/getting-unique-id.html