PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL: Duplicate entry '0' for key <--bei insert Anweisung



Gutschy
07.03.04, 16:21
Hi, bin jetzt ein wenig Ratlos. Diese Seite soll in der Datenbank eintragen. Normalerweise stellt das auch über den "insert" Behfehl kein Prob dar, nur hier will er keinen Eintrag zulassen.



<html>
<head>
<title>Weiter</title>
</head>
<body>
<h1>Anzeige Veranstalter</h1>
<?
include("funk.php");
include("verbind.php");

$sql="insert into veranstalter (veranstalter_nr,veranstaltungsort,
adresse, veranstalter)
values ('$Veranstalter_NR', '$Veranstaltungsort', '$Adresse',
'$Veranstalter')";

if ($res=send_sql($db,$sql)) {
echo "SQL-Kommando wurde ausgeführt";
}

echo "<br>Veranstalter: ", $Veranstalter_NR;
echo "<br>Veranstaltungsort ", $Veranstaltungsort;
echo "<br>Adresse: ", $Adresse;
echo "<br>Veranstalter: ", $Veranstalter;
?>

</body>
</html>

Das bringt ebend nur: Duplicate entry '0' for key

Hoffe ihr könnt mir Helfen ein Stichwort würde mich auch schon weiterbringen.

Hier nochmal die Beschreibung der Tabelle:





mysql> desc veranstalter;
+-------------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+----------+------+-----+---------+-------+
| Veranstalter_NR | int(5) | | PRI | 0 | |
| Veranstaltungsort | char(30) | YES | | NULL | |
| Adresse | char(40) | YES | | NULL | |
| Veranstalter | char(30) | YES | | NULL | |
+-------------------+----------+------+-----+---------+-------+
4 rows in set (0.01 sec)

Bubble
07.03.04, 19:23
Ich würde einfach mal sagen, du versuchst zwei Einträge mit selbem Primary Key anzulegen - nämlich der Veranstalter_NR 0.

Schau mal in die Tabelle was dort schon für Einträge vorhanden sind. Und dann lass dir mal den Inhalt der Variablen in deinem PHP-Skript anzeigen. Mit Sicherheit wirst du dann den Fehler finden.
Bubble

`kk
07.03.04, 19:31
Selber Primary Key, kein Auto Increment.

MfG, kai :)

Gutschy
07.03.04, 21:44
Na ja, nette Vorschläge, aber eigentlich sollte es daran nicht liegen. Das die Werte für die erste Spalte nie gleich sein dürfen ist mir bei PRIMARY KEY schon klar. Natürlich übergebe ich an die Tabelle immer verschiedene Werte aber ohne Änderung der Fehlermeldung.

AUTO INCREMENT hift mir auch nicht viel, weil in der ersten Spalte ja garnicht hochgezählt werden soll, sondern lediglich ebend die Veranstalternummer nie gleich sein darf.

Hoffentlich habt ihr noch andere Lösungsvorschläge *hoff*, Google hat es auch nicht so gebracht.:(

Gutschy
09.03.04, 17:31
Aber die Leute vom unten genannten Board konnten mir dann weiter helfen ;)

>>Board<< (http://www.linuxforen.de/forums/showthread.php?s=&postid=768687#post768687)


Es lag an der Version von PHP, ab der Version von 4.2 ist der Schalter "global_register" von standartmäßig "on" auf "off" gestellt worden, eine Tatsache die die meisten Einführungsbücher in PHP noch nicht berücksichtigen konnten.

Bubble
09.03.04, 19:36
Kleiner Tipp: Ich würde bei solchen Fehlermeldungen immer das $sql-Statement anzeigen lassen. Hier findest du dann meist den Fehler. Hätte dir zumindest die Änderung des DB-Designs erspart :)
Bubble

`kk
09.03.04, 20:24
Wir konnten dir nicht helfen?

PHP war natürlich Schuld...was für eine Logik.

PEBKAC

Gutschy
09.03.04, 23:06
@Bubble, kannste mir vielleicht noch zeigen wie ich diesen Code"$name = $HTTP_POST_VARS["name"];" in die oben gezeigte Seite einbauen kann. Bei nur einer Varialblen war das ja kein Problem, aber welche Syntax ich bei so vielen anwenden soll:confused:, ich mein falls du gerade nix besseres vorhast.

@'kk: immer locker bleiben;). Hab doch nur gesagt das der Code in einer älteren Version von PHP in den Default Einstellungen ohne weiteres gelaufen währe.