2012-04-15 8 views
0

に動作していないDUPLICATE KEY UPDATE ON:INSERT INTO ...私はこのクエリを実行しようとして適切に

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

をしかし、何が起こることは、それが実行されていますとき、それを再度実行だ場合、私はいつも、重複したエントリを取得するということです、更新する代わりにもう一度実行して別の2つのエントリを追加します。なぜそれが起こっているのですか?

答えて

6

挿入する列の1つがプライマリキーまたは一意の制約を持つ必要があります。

+0

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

+0

また、IDは自動増分プライマリキーである必要はありません) – hjpotter92

+0

ああ、それは自動だからです-incrementなので、私はそれをPRIMARY KEYまたはUNIQUEに設定するべきですが、自動増分ではありませんか? – Roland

関連する問題