php - Possible to have Mysql table with 2 unique columns -
i save game scores using code:
function submitscore() { global $result, $db; $playername = $db->real_escape_string(strip_tags($_post["playername"])); $score = $db->real_escape_string(strip_tags($_post["score"])); $fbusername = $db->real_escape_string(strip_tags($_post["fbusername"])); $gamelevel = $db->real_escape_string(strip_tags($_post["gamelevel"])); $query1 = "select * leaderboard playername = '$playername'"; $query2 = "insert leaderboard (playername, score,fbusername,gamelevel) values ('$playername', $score,'$fbusername','$gamelevel')"; $query3 = "update leaderboard set score = $score playername = '$playername'"; $scores = $db->query($query1); if ($scores->num_rows == 0) { $db->query($query2); $result = "0:new entry"; } else { $row = $scores->fetch_object(); $oldscore = $row->score; if ($score > $oldscore) { $db->query($query3); $result = "0:successful update"; } else $result = "0:score lower before"; } }
the playername column unique , inserts new row new player updates existing players score if higher existing one.
this fine high scores , 1 level need need store users facebook name , multipule game levels. possible have playername , gamelevel columns unique, whereby can obtain player 1 level 1, player 1 level 2 etc; bearing in mind have keep high score well.
john
mysql supports combination of columns defined unique key. if remove index playername , add new 1 playername+level set far mysql goes.
this how it's done sql:
alter table `leaderboard` drop index `unique_index`; alter table `leaderboard` add unique `unique_index`(`playername`, `gamelevel`);
Comments
Post a Comment