Eintrag überarbeiten, falls vorhanden.

KickBoxxer

Grünschnabel
Hallo zusammen

Ich probiere mich gerade daran, ein PHP-Script zu schreiben welches folgendes tun soll:

Durch ein Formular wird ein Eintrag in einer DB erstellt, falls dieser noch nicht vorhanden ist. Ist dieser Vorhanden, soll nur ein Datenfeld übearbeitet werden.

Das habe ich bis jetzt:
PHP:
				if($postBeschreibung != "") {
				if($postMenge !="") {
				if($postPersonen !="") {
				if ($postDurchschnitt !="")
				{
					$verbindung = mysql_connect ("localhost",
					"root", "lk.lk$")
					or die ("keine Verbindung möglich.
					Benutzername oder Passwort sind falsch");

					mysql_select_db("zettel")
					or die ("Die Datenbank existiert nicht.");
	
					   $query = "SELECT beschreibung FROM artikel WHERE   beschreibung='$postBeschreibung'";

					$result = mysql_query($query);

					if (mysql_num_rows($result))
					{	
						$query2 = "Update `artikel` set `menge` = `$postMenge` WHERE `beschreibung` = `$postBeschreibung` ";
						echo "Menge wurde geaendert.";
					
						mysql_query($query2)
						or die ("MySQL-Error: " . mysql_error());
					}
					
					else
					{
						
						$eintrag = "INSERT INTO artikel
					(beschreibung, menge, personen, durchschnitt)
					VALUES
					('$postBeschreibung', '$postMenge', '$postPersonen', '$postDurchschnitt')";
					$eintragen = mysql_query($eintrag);
					}
									
					echo "<p>Eintrag war erfolgreich</p>";
					exit();
				}}}}


Doch bei mir wird als Fehler angezeigt:
MySQL-Error: Unknown column 'Brot' in 'where clause'

Wobei Brot der Variablen $postBeschreibung entspricht

Kann mir jemand helfen?
 
Geht direkt mit SQL in MySQL
Suche mal nach:
INSERT INTO .... ON DUPLICATE KEY UPDATE ......
 
Danke für den Hinweis, ich habe es jetzt so probiert:


PHP:
$eintrag = "INSERT INTO artikel
(beschreibung, menge, personen, durchschnitt)
VALUES
('$postBeschreibung', '$postMenge', '$postPersonen', '$postDurchschnitt')"
ON DUPLICATE KEY UPDATE `menge`=$postMenge;

$eintragen = mysql_query($eintrag);

Nun wird zwar kein Fehler mehr angezeigt, und der DB eintrag funktioniert auch, aber er macht kein "Update" sondern macht einen neuen Datensatz, warum?
 
In deiner Feldliste sehe ich keine ID oder sonstwas. Der KEY ist der PRIMARY KEY der Tabelle. Wenn der schon vorhanden ist, dann gibts ein UPDATE
 
Ah, danke..
Der KEY ist bei mir id, gleichzeit Primary Key, dieser ist auf auto_increment gestellt.
Wie füge ich dort etwas anderes ein?
Also falls die Beschreibung schonmal vorhanden ist, dann....?
 
Zuletzt bearbeitet:
Hi,

meiner Meinung nach ist das aber nicht der Fehler, sondern das falsche " am Ende der 4.Zeile. Das muss vor den ;.
PHP:
$eintrag = "INSERT INTO artikel
(beschreibung, menge, personen, durchschnitt)
VALUES
('$postBeschreibung', '$postMenge', '$postPersonen', '$postDurchschnitt')"
ON DUPLICATE KEY UPDATE `menge`=$postMenge;

Grüße,

Dirk
 
Hat sich erledigt, das Problem war, hatte statt ' ` gemacht.
Wobei ich nicht weiss, wann was kommt...

Den Backtick (`) macht man, wenn man die Spalten-, Tabellen- und Datenbank-Namen als solche kennzeichnen will.

Die Single-Quotes (') - manche sagen auch "einfache Gänsefüsschen" - werden verwendet, um Zeichenketten zu definieren.

Hier mal ein Beispiel zur Veranschaulichung:

Code:
INSERT INTO users (`name`, `email`, `passwd`) VALUES ('hansdampf', 'hans@dampf.de', 'super_secret');
 
Zurück