-1

私はこれを作ろうとしています:

$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 をチェックするようにするにはどうすればよいですか?

前もって感謝します ;-)

4

2 に答える 2

2

ON DUPLICATE KEYインデックス違反をチェックして、挿入または更新する必要があるかどうかを確認するため、最初にチェックする 2 つの列に一意のインデックスを作成する必要があります。

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

その後、同じ fk_player_id/year の組み合わせがテーブルに既に存在する場合は代わりに更新されます。

于 2013-02-21T20:46:51.100 に答える
0

関数を使用しVALUESます。

これを試して

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

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.htmlを参照してください

于 2013-02-21T20:56:33.637 に答える