2013-02-21 42 views
-1

我試圖使這個:UPDATE對重複的關鍵問題

$sql = mysql_query("SELECT COUNT(fk_player_id) count FROM wr_year WHERE fk_player_id=$currplayer AND year=2013"); 
$row = mysql_fetch_assoc($sql); 

if($row['count'] == 0){ 
    mysql_query("INSERT INTO wr_year (fk_player_id, year, points) VALUES ($currplayer, 2013, $points)"); 
} else { 
    mysql_query("UPDATE wr_year SET points=points+$points WHERE fk_player_id=$currplayer AND year=2013"); 
} 

進入這個:

mysql_query("INSERT INTO wr_year (fk_player_id, year, points) VALUES ($currplayer, 2013, $points) 
ON DUPLICATE KEY UPDATE points=points+$points"); 

但這艾因工作?我如何確保它僅在fk_player_id和year上檢查ON DUPLICATE,並且可以完成?

在此先感謝;-)

+3

[**在新的代碼,請不要使用'mysql_ *'功能**](http://bit.ly/phpmsql)。他們不再被維護[並且被正式棄用](http://j.mp/XqV7Lp)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。 – Kermit 2013-02-21 20:44:49

+0

和你會用這個'WHERE fk_player_id = $ currplayer'做什麼? – 2013-02-21 20:52:37

回答

2

ON DUPLICATE KEY檢查指標違規,看它是否應插入或更新,所以你需要先創建您要檢查兩個列的唯一索引;

CREATE UNIQUE INDEX uix_wr_year ON wr_year (fk_player_id, year); 

之後,如果表中已經存在相同的fk_player_id/year組合,它將會更新。

+0

剛做完這份工作......謝謝;-) – Mansa 2013-02-21 21:11:39