insert oder update (für MySQL)

Steusi

Nasenbär
NEU:
Kann mir bitte einer helfen?
Ich möchte bei alte Datensätze ein update machen, aber wenn diese nicht enthalten sicht hinzufügen!
Ich möchte Zählerstände der Drucker auslesen, ist ein Drucker beim ersten durchlauf noch nicht eingeschaltet, wird kein Eintrag geschrieben. Das Script wird aber 2 mal täglich ausgeführt, wenn der Drucker beim 2. durchlauf eingeschaltet ist, soll der Seitenstand mit aufgenommen werden.
Nur so klappt es ja leider nicht!
Hoffe jemand hat einen Tipp
PHP:
	$pruefen = mysql_query("SELECT * FROM seitenzahlen WHERE Datum='".$datum."'");

		if(mysql_num_rows($pruefen)) {
			for($i = 1;$i < $count; $i++) {	
				$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 {	
			for($i = 1;$i < $count; $i++) {		 
				 $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;
		}


// Das Thema gehört zu dem alten, deshalb brauch ich ja kein neues Thema starten!

ALT:
Hallo ich habe eine Frage, meiner Meinung gab es einen Befehl, welcher neue Daten in die DB einfügt, bestehen die Daten schon, werden sie nicht hinzugefügt sondern aktuallisiert.
Ich finde das ZAUBERWORT leider nicht.

Das einzige was mir als Lösung einfällt, Daten mit Bedingungen löschen und wieder alles einfügen, aber das kann ja nicht das Optimum sein.

Hoffe, ich irre nicht und einer kennt den Begriff, DANKE
 
Zuletzt bearbeitet:
mysql.de hat gesagt.:
REPLACE ist eine MySQL-Erweiterung zum SQL-Standard. Es kann Datensätze einfügen, oder es kann Datensätze löschen und einfügen. Wenn Sie eine Anweisung suchen, die dem SQL-Standard entspricht und die entweder einfügt oder aktualisiert, dann benutzen Sie die INSERT ... ON DUPLICATE KEY UPDATE-Anweisung (siehe auch Abschnitt 13.2.4.3, „INSERT ... ON DUPLICATE KEY UPDATE“).
Das heißt der Datensatz wird erst gelöscht und dann eingefügt.
Wenn man aber nur einige Werte aktualisieren möchte, sind nach meinem Wissen die ursprünglichen Daten weg?
 
So ich habe es einmal getestet. Als erstes

PHP:
 		$eintrag = "INSERT INTO seitenzahlen (Datum, Seitenzahlen, Grunddaten_idGrunddaten) VALUES ('$datum', '$arrStand[$i]', '0') ON DUPLICATE KEY UPDATE Datum = '$datum'";
Soll nur Update durchführen, wenn das Datum schon vorhanden ist, schreibt man es so

Ich bekomm folgenden Fehler:

Cannot add or update a child row: a foreign key constraint fails (`tonerverwaltung/seitenzahlen`, CONSTRAINT `fk_Seitenzahlen_Grunddaten` FOREIGN KEY (`Grunddaten_idGrunddaten`) REFERENCES `grunddaten` (`idGrunddaten`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Und bei REPLACE habe ich es so gemacht:
PHP:
$eintrag = "REPLACE INTO seitenzahlen SET 'Datum' = '$datum', 'Seitenzahlen' = '$arrStand[$i]'";
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax
 
Geht es denn so:
PHP:
$eintrag = "REPLACE INTO seitenzahlen SET `Datum` = '$datum', `Seitenzahlen` = '" . $arrStand[$i] . "'";
?
 
Jetzt gibt er keine Fehlermeldung aus, aber es funktioniert nicht.
Wie soll es auch klappen, ich verstehe es nicht wirklich.
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.
Das erkenne ich in der Syntax von Replace nicht.
Sonst lösch ich wirklich alle Einträge mit den heutigen Datum und füge alle von heute wieder ein.
Lieber wäre es mir aber ich könnte auch mit Replace arbeiten ^^
 
Zurück