在循环条目

时间:2016-04-19 09:46:17

标签: php mysql pdo

在这段代码中,我接受数据作为数组并将其插入数据库中。当我在使用while循环时,我有多个具有相同名称的输入字段,您可以在下面的HTML代码中看到。我想要做的是,我想添加一个检查,如果两个字段相同,那么echo错误说两个字段不能相同,否则插入数据。如果数据有两个不同的输入字段,例如if($field1 == $field2){ echo "Error!";,则插入数据,我可以这样做。但是这里的字段只有一个是在while循环中给出多个字段。我该如何添加此支票?

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代码:

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>';
        }
    }
}

1 个答案:

答案 0 :(得分:-1)

由于$ priority是从$ _POST [&#39; priority&#39;]获得的数组,因此您可以执行以下操作:

$num_original = count($priority);
$num_unique = count(array_unique($priority));

if ($num_original != $num_unique) {
  echo "One or more item were idendical!";
}

在将$ _POST输入传递给SQL查询之前,还要确保使用mysql_real_escape_string()或类似的方法。否则,您的代码很容易受到SQL注入的攻击!