Duplicate entry '2' for key 1

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Duplicate entry '2' for key 1

Beitrag von fanrpg »

Also im Titel stehts ja also wenn ich mir nen Script bastel zum regestrrieren (nicht phpBB :wink: ) kommt folgende Fehlermeldung, beim 2. oder 3. versuch:

Code: Alles auswählen

Duplicate entry '2' for key 1
sehr vielsagend find ich nicht :roll:

Ich weiss nur das er die ID in der DB nicht 1 höher setzt und gar keine dann abspeichert :roll:

hier der Code Schnipsel:

Code: Alles auswählen

<?php
include("config.php");
 
if ($_POST['comment'] == "") {
  echo "error";
  }
  else
  {
  $result = "SELECT ID FROM user";
 $result = mysql_query ($result);
$commentid = mysql_fetch_array($result);
 $commentid = $commentid[0];
 $commentid++;
  $idsql = "UPDATE user SET ID='".$commentid."' where comment='".$comment."'";
  $comments_comment = "INSERT INTO user (comment, username, wohnort, icq, ava, msn, webseite) VALUES ('$comment', '$username', '$wohnort', '$icq', '$ava', '$msn', '$webseite')";
  $comments_comment_q = mysql_query($comments_comment);
   mysql_query($idsql);
  if (mysql_error()) {
   echo mysql_error();
   exit;
  }

  ?>
  <form method="post">
  <center>
  Nickname:
    <input type="text" size="17" name="username" maxlength="10">*<br>
  Passwort:
  <input type="text" size="17" name="comment" maxlength="100">*<br>
    Wohnort:<input type="text" size="17" name="wohnort" maxlength="100"><br>
	ICQ-Nummer:<input type="text" size="17" name="icq" maxlength="100"><br>
	MSN:<input type="text" size="17" name="msn" maxlength="100"><br>
	Webseite:<input type="text" size="17" name="webseite" maxlength="100"><br>
	Avatar(muss URL sein und extern sein):<input type="text" size="17" name="icq" maxlength="100">
  <br><br>

  <input type="submit" value="Abschicken">
</center>
  </form>
  *Pflichtfelder
  <?  } ?>
und der Syntax der Tabelle

Code: Alles auswählen

CREATE TABLE `user` (
  `ID` varchar(255) NOT NULL default '',
  `username` varchar(25) NOT NULL default '',
  `comment` text NOT NULL,
  `wohnort` varchar(255) NOT NULL default '',
  `icq` varchar(25) NOT NULL default '',
  `ava` varchar(255) NOT NULL default '',
  `msn` varchar(255) NOT NULL default '',
  `webseite` varchar(255) NOT NULL default '',
  UNIQUE KEY `ID` (`ID`)
) TYPE=MyISAM;
nur irgendwo ist der fehler nur ich find den nicht :cry:

Hoffe einer kann helfen
Benutzeravatar
QCO
Mitglied
Beiträge: 708
Registriert: 15.03.2003 12:30
Wohnort: Leipzig

Beitrag von QCO »

Also da ist irgendwo ganz schön der Wurm drin...
1) Wenn ID eine ID ist, warum kommt sie dann in ein Feld varchar?
2)

Code: Alles auswählen

$result = "SELECT ID FROM user"; 
du lässt dir hier alle ids aus der DB suchen und addierst dann zum ersten Eintrag eins dazu, ja?
Das ergibt irgendwie keinen Sinn.
Vielleicht meinst du sowas wie

Code: Alles auswählen

SELECT max(ID) FROM user
.
3)

Code: Alles auswählen

  $comments_comment = "INSERT INTO user (comment, username, wohnort, icq, ava, msn, webseite) VALUES ('$comment', '$username', '$wohnort', '$icq', '$ava', '$msn', '$webseite')"; 
hier fügst du jetzt etwas in die Tabelle user ein, ohne dabei irgendeine ID anzugeben.
4) Danach versuchst du, in die bei 3) eingefügte Zeile noch eine ID reinzusetzen.

Versteh ich das erstmal soweit alles richtig?
Wenn ja, dann ist die Lösung aller deiner Probleme sehr einfach: Benutz die Mittel von PHP/MySQL und geh mal nicht von hinten durch die Brust ins Auge...

1) Spalte ID autoincrement machen.
2) das 2.) und 4.) von oben lässt du bleiben.
Dann setzt MySQL automatisch eine ID.
Schnelle direkte Hilfe? Modeinbau? Umfassender, persönlicher Support? Ein individuelles Design/Template?
Ich bin käuflich und löse zu kleinen Preisen Deine Probleme. Anfragen bitte per PN oder Mail.
Antworten

Zurück zu „Coding & Technik“