Force Update?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Force Update?

    Hallo

    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.")");
    }
    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

  • #2
    Entweder einen unique index aus den beiden Spalten generieren
    was bitte spricht dagegen?

    Kommentar


    • #3
      mysql_info() wird helfen.

      Kommentar


      • #4
        Ich habe mich für die UID-Methode entschieden. Danke an alle

        Kommentar

        Lädt...
        X