ホームページ  >  記事  >  バックエンド開発  >  ユーザーが繰り返し送信するのを防ぐための SQL ステートメントが機能しない場合がある場合の解決策について質問する

ユーザーが繰り返し送信するのを防ぐための SQL ステートメントが機能しない場合がある場合の解決策について質問する

WBOY
WBOYオリジナル
2016-06-13 13:37:02867ブラウズ

ユーザーが繰り返し送信できないようにする SQL ステートメントが機能しないことがあるという質問がありました。
ユーザーはオプションを選択して送信し、正しく回答したユーザーが送信できないように制限を追加します。再度回答する必要があります:

SQL コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->select * from q_record where username='$username' and  isright=1 limit 1


見つからない場合は、挿入ステートメントを実行します:
SQL コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->insert into q_record...


ただし、 isright=1 の数値が 1 より大きいユーザーがまだ存在することがわかりますが、時間が同じ秒であるのはなぜでしょうか。データベースが応答に失敗し、適切な選択判断が行われる前に挿入ステートメントが実行されましたか?

-----解決策---------
あなたのphpコードを確認したいです。また、SQL をこのように記述する必要はありません。
------解決策---------
あなたのテーブルも同じではありませんか? q_record が更新セットの代わりに挿入を使用するのはなぜですか?


------解決策---------
js と php の両方に時間制限を追加します。 js 制限は一般的な制限であり、PHP はセッション内の最後の応答時間を保存し、非常に短期間に送信が繰り返されたことが問題の原因である場合に制限します。
------解決策---------
話し合う

引用:
これは同じテーブルではありませんか? q_record が更新セットの代わりに挿入を使用するのはなぜですか?
回答が正しい場合、ユーザーは再度回答しないように求められ、そうでない場合は再度回答するように求められます。

------解決策---------
これについて言えば、ユーザーが繰り返し送信するのを防ぐためです。いわゆる最大のコミュニティの 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 = "q_record に挿入 (pid,question,isright,time ) ) 値 ('$pid','$question','$isright','$time')";
$result = mysql_query($query);
}
?>
これを試してください
------解決策---------
データベーステーブルの構造は何ですか。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。