2012-04-15 10 views
0

Ich versuche, diese Abfrage auszuführen:INSERT INTO ... ON KEY UPDATE DUPLICATE nicht ordnungsgemäß funktioniert

protected function store_credentials($config_file_path = 'envato_credentials_config.json') { 
    $credentials_config = $this->get_envato_config($config_file_path); 
    $sql = "INSERT INTO credentials (api_key, username, last_update) VALUES (?, ?, NOW()) ON DUPLICATE KEY UPDATE api_key = values(api_key), username = values(username), last_update = values(last_update)"; 
    if ($stmt = $this->connect->prepare($sql)) { 
     $stmt->bind_param('ss', $credentials_config['API'], $credentials_config['User']); 
     $stmt->execute(); 
     $stmt->close(); 
    } else { 
     return false; 
    } 
} 

Aber was passiert, ist, dass ich immer doppelte Einträge erhalten, wenn es ausgeführt ist, wenn es wieder ausgeführt ist, Anstatt es zu aktualisieren, wird es erneut ausgeführt, indem zwei weitere Einträge hinzugefügt werden. Warum passiert das?

Antwort

6

Eine der Spalten, die Sie einfügen, muss ein Primärschlüssel sein oder eine eindeutige Einschränkung haben.

+0

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html –

+0

und auch, ID muss nicht automatisch inkrementieren Primärschlüssel;) – hjpotter92

+0

Oh, weil es automatisch ist -increment, also sollte ich es auf PRIMARY KEY oder UNIQUE setzen, aber nicht automatisch inkrementieren? – Roland

Verwandte Themen