Hallo Rolf,
ich schreibe über die PHP-Funktion
mysql_query();
Daten in eine MySQL-Datenbank.
Falls MySQL
laut OP geht es um MySQL :-)
Wie kann ich erzielen, dass der Datensatz erstellt (INSERT) wird, wenn UPDATE fehlschlägt, _ohne_ eine PHP-if-else-Konstruktion zu bemühen?
Falls MySQL: schau mal nach REPLACE thats cool ;-)
Noch viel cooler ist es (falls MySQL 4.1.0 und neuer) das Problem von der anderen Seite anzugehen. Da REPLACE einen vorhandenen Datensatz löscht und dies nicht immer wünschenswert ist, ziehe ich folgendes vor:
Falls INSERT fehlschlägt wegen Schlüsselverletzung, wird ein UPDATE durchgeführt, die Klausel ON DUPLICATE KEY UPDATE
, siehe MySQL-Handbuch macht es möglich. Ich gehe davon aus, dass in dem Statement
UPDATE tabelle SET schluessel = wert WHERE session = 123
session das Schlüsselfeld darstellt, somit könnte man
INSERT tabelle
SET
schluessel = wert,
session =123
ON DUPLICATE KEY UPDATE
verwenden, damit der OP das gesteckte Ziel erreicht. Falls der Datensatz existiert und weitere Daten enthält, gehen diese nicht verloren.
Freundliche Grüße
Vinzenz