Hallo
mit folgendem Code möchte ich Datensätze updaten, wenn sie nicht existieren, inserten;
das Problem dabei ist dass wenn ein Datensatz zwar existiert aber die Änderungen dem ursprünglichen Datensatz entsprechen, keine Rows affected, und der Datensatz neu geschrieben wird. Hmmm, Lösungen... . REPLACE und ON DUPLICATE KEY UPDATE funktionieren nur mit einem gleichen unique index oder einem primarykey, ich habe hier aber 2 spalten anhand denen der Datensatz erfasst wird.
Möglichkeiten die mir dazu einfallen: Entweder einen unique index aus den beiden Spalten generieren, oder vorher alles auslesen und vergleichen. Womöglich gibt es noch besseres; Wenn ihr was habt, bitte schreibt es, wenn nicht, auch. Danke.
MfG
Luke
mit folgendem Code möchte ich Datensätze updaten, wenn sie nicht existieren, inserten;
Code:
foreach($_POST['permissions'] as $group_name => $group) { $perm_read = ($group['read'] == "true") ? 1 : 0; $perm_write = ($group['write'] == "true") ? 1 : 0; $mysql->query("UPDATE ".MYSQL_TABLE_PREFIX."page_permissions SET perm_read = ".$perm_read.", perm_write = ".$perm_write." WHERE perm_page_id = ".$cur_revision[1]." AND perm_group_id = ".$group['id']); if(!mysql_affected_rows()) $mysql->query("INSERT INTO ".MYSQL_TABLE_PREFIX."page_permissions (perm_page_id, perm_group_id, perm_group_name, perm_read, perm_write) VALUES (".$cur_revision[1].", ".$group['id'].", '".$group_name."', ".$perm_read.", ".$perm_write.")"); }
Möglichkeiten die mir dazu einfallen: Entweder einen unique index aus den beiden Spalten generieren, oder vorher alles auslesen und vergleichen. Womöglich gibt es noch besseres; Wenn ihr was habt, bitte schreibt es, wenn nicht, auch. Danke.
MfG
Luke
Kommentar