在这段代码中,我接受数据作为数组并将其插入数据库中。当我在使用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>';
}
}
}
答案 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注入的攻击!