2017-05-21 12 views
1
if(isset($_POST['Active']) && isset($_POST['Box'])){ 

    $status= $_POST['activation']; 

    foreach($_POST['Box'] as $remove_ch){ 


     $sqlupd= "update Pre_Enrollment set Status='$status' where Checkbox_Id='$remove_ch'"; 
     $resultupdate = mysqli_query($database,$sqlupd) or die (mysqli_error($database)); 

     if($resultupdate){ 
      echo "<meta http-equiv=refresh content=\"0; URL=../Admin/admin pre-enrollment.php\">"; 
     } 

    } 

} 

このコードから、ステータスを更新する必要がありますが、私は持っている最後の行だけを更新してください。それから、最初のものと同じ選択肢で残りを更新できます。ステータスがオプションリストであることを考慮してください。何が間違っているのか教えていただけますか?foreachループphpを使用して更新

+0

'meta'の代わりに' header'を使います。ループ外の状態を設定します。ステータスフィールドは1つだけですか? 'in'を使用してすべてのレコードを一度に更新することができます。あなたはSQLインジェクションにオープンしており、クエリをパラメータ化しています。また、 'Active'と' activation'入力もありますか? – chris85

+0

私にはアクティブなオプションと非アクティブなオプションがあります。 「アクティブ」はボタン、「アクティブ化」はオプションの名前です。 –

+0

あなたのコードはSQLインジェクションに対して脆弱です。これを修正する必要があります。 – Enstage

答えて

0

まず、SQLインジェクションにさらされている可能性があるので注意してください。文字列を連結するのが最善の選択肢ではないので、パラメータ化されたクエリを実行してみてください。

第2に、タグはどのように見えますか? 一般的な間違いは、フィールドの後に "[]"を忘れることです。例:

<input type="checkbox" name="Box[]" value="{ID}"> 

第三に、echo "<meta..>"はおそらく、foreachループの外でなければなりません。

+0

パラメータ化されたクエリは何ですか?エコー ""? –

+0

SQLインジェクションについて:http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – user3429660

+0

Byエコー "私はリフレッシュメタタグを指していました。ループの中に置いておくと、$ _POST ['Box']のすべての項目に対して一度だけ印刷されます。 – user3429660

関連する問題