2017-10-16 9 views
1

私は、1つのサブミットボタンの章数をnにし、1つの挿入クエリを基本的にループで挿入する必要がある位置に止まります。mysql PHPの条件に基づいて操作を挿入します

私の質問は、ユーザーがチャプター番号3の試験に合格した場合、チャプター3のレコードを挿入したくないということです。これは達成可能ですか?私はこれを自分自身で解決しようとしましたが、方法を見つけることができませんでした。ここで

は私のコードです:

for($i = 1; $i=5; $i++) { 
    $sql="INSERT INTO tbl_user_reattempt (ID,user_id,chapter_id,days_for _start,days_for_end,created) VALUES ('','$user_id','$chapter_id','$days_for_start','$days_for_end','$created')"; 
    $result = mysql_query($sql); 
    if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
    } 
} 

行う必要がありますどのような修正?

答えて

0
  1. user_idchapter_idの2つのフィールドに一意のインデックスを作成します。
  2. INSERTクエリの最後にON DUPLICATE KEY UPDATE ID = IDを使用してください。
+0

ありがとうございました。あなたが言及した第2のポイントが何を実行するかを説明することができます。ありがとう – Ansh

+0

最初のステップでは、データベースに特別な動作を追加して、2つのフィールドでペアの一意の値(user_idとケースの合格した章)を確認し、重複してエラーをスローします。 2番目のステップでは、重複した、ただの更新フィールド(ID = IDは "何もしない"という意味)で例外をスローしないようにデータベースに尋ねるので、データベースレイヤーですべての重複は無視され、PHP側から何も追加する必要はありません。 – user1597430

関連する問題