insert oder update (für MySQL)

Wenn das Datum gleich ist soll die Seitenzahlen geupdatet werden, ist das Datum noch nicht vorhanden, soll die neue Seitenzahl eingetragen werden, als neuer Eintrag.

[...] ON DUPLICATE KEY UPDATE Datum = '$datum'

Guten Morgen. Erstmal Kaffee Steusi ;) - weil wenn du die Seitenzahl aktualisieren willst dann muss das bei dem UPDATE selbstverständlich auch hin. Bei deinem Query versuchst du das das Datum zu aktualisieren. Also: Go4Caffeine
 
So muss man es lesen, aha Danke.
Leider klappt es nicht, aber ich hoffe es liegt jetzt nicht mehr an dem Befehl. Wenn ich die FOREIGN KEY und REFERENCES erstell gibt es immer Fehler, dass muss ich erstmal selbst prüfen. DANKE euch
FEHLER:
ON DELETE NO ACTION ON UPDATE NO ACTION
 
Auch fogendes klappt nicht:
PHP:
 		$eintrag = "INSERT INTO seitenzahlen (Datum, Seitenzahlen,Grunddaten_idGrunddaten) VALUES ('$datum', '$arrStand[$i]','1') ON DUPLICATE KEY UPDATE Seitenzahlen = '$arrStand[$i]'";

Er fügt immer einen neuen Datensatz hinzu
 
Hats du überhaupt die Spalte in deinem Query, welche dein Unique Key ist?
Ohne der geht es logischer Weise nicht. :)
 
Einen Unique Key habe ich nicht definiert, wie muss ich es machen? Jemand eine Lektüre für mich als Link?

Ohne Erklärung verstehe ich folgendes nicht:
PHP:
  ALTER TABLE <table identifier> 
      ADD [ CONSTRAINT <constraint identifier> ] 
      UNIQUE ( <column expression> {, <column expression>}... )
 
Hallo ich habe es immer noch nicht hinbekommen, kann mir jemand ein Codebeispiel zeigen?


Mein Aufruf:
PHP:
//$datum = heutige Datum

$eintrag = "INSERT INTO seitenzahlen (Datum, Seitenzahlen,idGrunddaten) VALUES ('$datum', '$arrStand[$i]','1') ON DUPLICATE KEY UPDATE Seitenzahlen = '$arrStand[$i]' ";
Wie muss ich denn meine Spalte Seitenzahl im MySQL-Code editieren?


Also sobald das heutige Datum schon in der DB vorhanden ist soll ein update erfolgen, ist das Datum noch nicht vorhanden, dann sollen neue Datensätze angelegt werden!



Code Beispiel, welches ich nicht verstehe
PHP:
CREATE TABLE ipstat(ip int UNSIGNED NOT NULL PRIMARY KEY, 
                          hits int UNSIGNED NOT NULL, 
                          last_hit timestamp);
 
INSERT INTO ipstat VALUES(inet_aton('192.168.0.1'),1,now()) 
                       ON duplicate KEY UPDATE hits=hits+1;

Warum steht dort bei den Beispielen immer
PHP:
hits=hits+1;

Hoffe jeman zeigt mir einen Code, sonst lass ich es mit der schönen Option. :suspekt:
 
Zuletzt bearbeitet:
Habe es jetzt folgendermaßen gelöst:

PHP:
		for($i = 1;$i < $count; $i++) {	
		
			//Prüfung, ob der Datensatz schon besteht, in Abhängigkeit vom Datum.			
			$pruefen = mysql_query("SELECT * FROM seitenzahlen WHERE Datum='".$datum."' AND Name= '".$arrName[$i]."'");
		
			if(mysql_num_rows($pruefen)) {
			
				$eintrag = "UPDATE ".
								"seitenzahlen ".
						   "SET ".
								"Seitenzahlen='".$arrStand[$i]."' ".
						   "WHERE ".
								"Datum = '".$datum."' AND Name= '".$arrName[$i]."'";
								
				// Daten eintragen.				
				mysql_query($eintrag) or die(mysql_error()); 

			$datastatus = "Die Daten wurden aktualisiert!";				
			} else {	
 
				 $eintrag = "INSERT INTO seitenzahlen (Datum, Seitenzahlen,Name) VALUES ('$datum', '$arrStand[$i]','$arrName[$i]')";	
				 
				// Daten eintragen.	
				mysql_query($eintrag) or die(mysql_error()); 
				
			$datastatus = "Neue Datensätze wurden der Datenbank hinzugefügt.";
			$sendmail = true;
			}
		}
Auch wenn das andere Eleganter gewesen wäre, jedoch weiß ich nicht wie man es macht und hab eure Tipps leider nicht umsetzen können.
Schade eigentlich....:mad:
 

Neue Beiträge

Zurück