2016-04-19 10 views
0

ここでは、このコードではデータを配列として受け取り、データベースに挿入します。 Whileループを使用しているので、私は以下のHTMLコードで見られるのと同じ名前の複数の入力フィールドを持っています。私がしたいことは、2つのフィールドが同じで、2つのフィールドが同じであることができないというエコーエラーがある場合、データを挿入するというチェックを追加したいと思います。 if($field1 == $field2){ echo "Error!";他のデータを挿入するようなデータの2つの異なる入力フィールドがある場合、私はそれを行うことができます。しかし、ここでは、フィールドはwhileループ内に複数のフィールドを与えるものです。どうすればこの小切手を追加できますか? $の優先順位を使用すると、$ _POST [ '優先']から取得する配列であるので、あなたが次のことを行うことができwhileループでのチェックインの追加

if(isset($_POST['priority'])){ 
    $priority = (!empty($_POST['priority']))?$_POST['priority']:null; 
    $bkid  = (!empty($_POST['bkid']))?$_POST['bkid']:null; 

    $iNumSets = count($priority); 

    for($i = 0; $i < $iNumSets; $i++){ 
     $str = "INSERT INTO priorities(pr_book, pr_by, pr_priority) 
       VALUES('$bkid[$i]', '$sess', '$priority[$i]')"; 
     $res = $PDO->prepare($str); 
     $res->execute(); 

     if($res){ 
      echo '<script>alert("Priority added successfully!");window.location = "view-order.php";</script>'; 
     }else{ 
      echo '<script>alert("Server Error! Please try back later.");window.location = "add-order.php";</script>'; 
     } 
    } 
} 
+0

ループ内でwindow.locationを使用した場合、1つの挿入クエリで別のページにリダイレクトされます。 1つのことは、複数の挿入クエリでは機能しないということです。 – dev

+0

最初は正しく質問を理解しています...答えを知っている場合にのみ回答してください...任意の提案に対してplzは具体的に質問に関連しています。使用されたwindow.locationは、if文の内側にあるので挿入が成功した場合にのみ実行されます。それで心配することはありません。 –

+0

あなたのコードはSQLインジェクションに対して脆弱です。準備文を使用する必要があります –

答えて

-1

HTMLフォームコード:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <?php while($pro = $priq->fetch()){ extract($pro); ?> 
     <div class="row tbpad"> 
      <div class="col-sm-3 col-xs-6"> 
      <p><i class="fa fa-caret-right"></i> <?php echo $bk_title; ?></p> 
      </div> 
      <div class="col-sm-1 col-xs-1"> 
      <div class="form-group"> 
       <input type="text" class="form-control" name="priority[]" value="<?php echo $pr_priority; ?>"> 
       <input type="hidden" class="form-control" value="<?php echo $bk_id; ?>" name="bkid[]"> 
      </div> 
      </div> 
     </div> 
     <?php } ?> 
     <input type="submit" class="btn btn-orange" value="Set Priority" name="priority"> 
     </form> 

PHPコードに

また、$ _POST入力でmysql_real_escape_string()などのメソッドを使用してからSに渡すようにしてくださいQLクエリ。さもなければあなたのコードはSQLインジェクションに脆弱です!

+0

私はPDOを使用しています...だから、mysql_real_escape_stringを使う必要はありません。今あなたの答えを試してください。ありがとう –

+0

遅く返事申し訳ありません..働き..ありがとう.. –

関連する問題