PHP-SQL drei spaltige ID erstellen

Hallo an Alle,

ich benötige für eine Tabelle einen dreispaltige ID in Form von

ID-Nutzer ID-Kurtz ID-Lang Start
 1 A3B2ST24WD edb0e8665db4e9042fe0176a89aade16 2010-03-24 17:22:15
 2 DT2R345SFE 4fb2f0a39d1c311e7329b1bc512d1518 2010-04-14 06:15:14

ID-Nutzer = Fortlaufende Nummerierung
ID-Kurtz = 10 Zeichen [A-Z;0-9]
ID-Lang = 32 Zeichen [a-z;0-9]
Start = NOW()

Wie kann ich mittels Einstellungen an der DB und einem PHP Code einen neuen Datensatz erstellen lasen ohne das sich dieses Datensätze wiederholen ?
Also keine der ID’s dürfen sich wiederholen !

Über eure Hilfe würde ich mich freuen und verbleibe

mit freundlichen Grüßen

Stefan Behrendt

Hallo Stefan,

das Attribut ID-Lang riecht mir nach einem md5 (http://www.php.net/manual/de/function.md5.php) Schlüssel.

Darf man fragen, wieso Du dies benötigst. Willst Du an einem Programm vorbei eine Datenbank füttern? Dann kann ich nur empfehlen, vor dem ersten Lauf die Datenbank zu sichern!

Eine Hash-Funktion für das Attribut ID-kurz fällt mir derzeit nicht ein.

MfG Georg V.

z.b.

INSERT INTO key3row (`ID-Nutzer`,`ID-Kurtz`,`ID-Lang`,`Start`) 
VALUES (NULL,RIGHT(PASSWORD(NOW()),10),MD5(NOW()),NOW()) 
ON DUPLICATE KEY 
UPDATE `ID-Kurtz` = RIGHT(PASSWORD(NOW()+1),10),`ID-Lang`=MD5(NOW()+1)





ID-Nutzer int(11) auto\_increment
ID-Kurtz varchar(10)
ID-Lang varchar(32) 
Start datetime 

Name Typ Unique 
sid BTREE Ja 

Feld
ID-Nutzer
ID-Kurtz
ID-Lang

ich machs aber lieber sicher .

<?php $sql = "LOCK TABLES TABELLE WRITE";<br />if ( !$res=mysql\_query($sql)) {echo "Error -\> ".$sql; exit;}

$isdouble10 = true;
while ($isdouble10) {
$new10 = substr(md5(time()),0,10);
 §sql = "SELECT ID-Kurtz FROM TABELLE WHERE ID-Kurtz = '".$new10."'"; 
 $isdouble10 = false;
 if ( !$res=mysql\_query($sql)) {echo "Error -\> ".$sql; exit;}
 while ($row = mysql\_fetch\_array($res,MYSQL\_ASSOC)) {
 $isdouble10 = true; 
 } 
}
$isdouble32 = true;
while ($isdouble32) {
 $new32 = md5(time());
 §sql = "SELECT ID-Lang FROM TABELLE WHERE ID-Lang = '".$new32."'"; 
 $isdouble32 = false;
 if ( !$res=mysql\_query($sql)) {echo "Error -\> ".$sql; exit;}
 while ($row = mysql\_fetch\_array($res,MYSQL\_ASSOC)) {
 $isdouble32 = true; 
 }
}

$sql = "INSERT INTO TABELLE (NULL,'".$new10."','".$new32."',NOW())"; 
if ( !$res=mysql\_query($sql)) {echo "Error -\> ".$sql; exit;}
$sql = "UNLOCK TABLES TABELLE";
if ( !$res=mysql\_query($sql)) {echo "Error -\> ".$sql; exit;}
?\>

hier sollte noch mehr zufall eingesetzt werden für time()

$new10 = substr(md5(time()),0,10);

$new32 = md5(time());