php
  • mysql
  • 2016-04-12 40 views 0 likes 
    0

    我的網站每天都有一個問題,並基於選擇用戶獲得經驗值(XP)的正確答案。一次只更新一次mySQL中的一組數據的策略

    我在mySQL數據庫中有兩個表。 1)試題庫2)用戶

    • 每個問題都有一個XP_VALUE(表試題庫)
    • 每個用戶都有XP(在表的用戶)現在

    ,一旦他們回答正確的問題,我有如果一個與此查詢語句:

    $mysqli->query("UPDATE users SET xp = xp + '$xp_value' WHERE id = '$userID'"); 
    

    這樣做,當然,我順利XP更新的用戶帶來新的價值,然而,問題是,當然用戶可以回去回答問題無盡的時間來增加他/她的XP。

    我正在尋找一種編碼策略,只更新xp一次,所有其他時間用戶試圖回答它不給xp的問題,只是如果他/她想要再次查看問題。

    欣賞你的時間, oliver_foxx

    +1

    要做到這一點,您需要跟蹤他們回答的問題。你需要一個數據庫設計,你可以說用戶X回答了問題A並獲得了經驗B.這樣,當進行更新時,你首先檢查用戶是否已經回答了這個問題 – Erick

    +0

    跟蹤所有已經回答的問題用戶。爲此,您將需要一張單獨的桌子。當用戶回過頭來回答相同的問題時,應該檢查該表。如果該用戶有該問題的輸入,則向該用戶提供任何XP點。 –

    +0

    你只更新用戶表,你怎麼知道用戶在哪個問題上得到了答案? – mitkosoft

    回答

    0

    跟蹤一天的?正如你所說的每日問題,只有當最後一次更新不是'今天'時纔會授予XP。

    $mysqli->query("UPDATE users SET xp = xp + '$xp_value', `day` = DATE(NOW()) WHERE id = '$userID' AND `day` < DATE(NOW()) "); 
    
    +0

    這對於日常問題似乎是一個好主意,但是,如果新問題的上傳時間有延遲,它可能會出現問題。但我會運行它並更新此評論。 thankz! –

    0

    您將需要一張新表,您可以說:用戶X今天回答了問題A。

    進行更新時,您可以輕鬆檢查用戶是否已經回答問題。

    您將有兩個參考表:用戶和問題。問題表將包含每個問題的經驗。

    相關問題