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
Moderator
Kommentar