2012-04-15 6 views
0

Я пытаюсь запустить этот запрос:INSERT INTO ... дублирование KEY UPDATE не работает должным образом

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; 
    } 
} 

Но что происходит, что я всегда получаю повторяющиеся записи, когда он выполняется, если он снова выполняется, вместо обновления он снова запускает добавление еще двух записей. Почему это происходит?

ответ

6

Один из столбцов, которые вы вставляете, должен быть первичным ключом или иметь уникальное ограничение.

+0

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

+0

а также, идентификатор не должен быть автоматически увеличивающимся первичным ключом;) – hjpotter92

+0

О, потому что это автоматический -increment, поэтому я должен установить его в PRIMARY KEY или UNIQUE, но не в автоматическом приращении? – Roland

Смежные вопросы