問關於sql語句防止使用者重複提交有時候不起作用解決方案

來源:互聯網
上載者:User
問關於sql語句防止使用者重複提交有時候不起作用
有一個問答表單,使用者選擇好選項之後提交,我先用一個sql語句加上限制,使得回答正確的人就不用再回答了:
SQL code
select * from q_record where username='$username' and  isright=1 limit 1

如果找不到,則執行插入語句:
SQL code
insert into q_record...

但是發現,資料庫裡面仍然會有個使用者的isright=1的數量大於1,而且時間是同一秒的,不知道是什麼原因?是不是資料庫反應不過來了,還沒有做好select判斷,就執行了insert語句?

------解決方案--------------------
我想看看你的php代碼. 另外SQL也不需要這麼寫.
------解決方案--------------------
你這個不是同個表嗎?q_record 怎麼是用insert into 不是update set?


------解決方案--------------------
加個時間限制,js和php都限制,js限制是一般情況的限制,php再在session中存放上次回答時間,到時候進行限制就行了,如果問題是因為極短時間內重複提交的原因
------解決方案--------------------
探討

引用:
你這個不是同個表嗎?q_record 怎麼是用insert into 不是update set?
insert into是記錄使用者的回答記錄,如果已經答對了,就提示使用者不用再答了,否則就讓使用者再來回答。

------解決方案--------------------
說起這個防止使用者重複提交,連號稱最大社區的csdn也沒解決,,昨天一個getTime()的問題,,我只提交了一遍,出來顯示2個,扣了40分,我擦
------解決方案--------------------
$query = "select * from q_record where username='$username' and isright=1 limit 1";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
if ($row) {
echo "你已經答對該題了,不需要再回答哦!";

}else{
$query = "insert into q_record (pid,question,isright,time) values ('$pid','$question','$isright','$time')";
$result = mysql_query($query);
}
?>
這樣試一下
------解決方案--------------------
資料庫表的結構是什麼樣的。
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.