检查php / mysql中的多个重复值验证错误

时间:2016-01-29 08:17:53

标签: php mysql forms

我正在尝试将表单值插入到具有几个必填字段的数据库中,但在插入之前我想检查数据库中是否已存在任何相同的值。为此我的代码是

<?php include_once 'header.php';$flag=0;
if(isset($_POST['submit']))
 {  $eid =$_POST["eid"];
   if($eid=="blank") {$flag=1;
  $idErr="please Select E-MITRA";}
  else{
  $sqli="SELECT * FROM emitra_device where uid='$eid'";
  $result1 = $conn->query($sqli);
$rowe=mysqli_fetch_array($result1);
if($rowe!=""){ $flag=1;
$idErr=" User ID Already Entered";} }

$miatm =trim($_POST["miatm"]);
 if(empty($miatm) || !preg_match("/^[a-zA-Z0-9 ]*$/",$miatm)) {$flag=1; 
$miErr="Please Enter Valid  Id"; }
 else{$sqlm="SELECT * FROM emitra_device where m_sno='$miatm'";
  $resultm = $conn->query($sqlm);
$rowm=mysqli_fetch_array($resultm);
if($rowm!="")
{$flag=1;$miErr=" machine ID Already Entered";}}   

.........和另外3个字段

//用于插入

 if($flag==0){$sqll="insert into *********** "}}?>
   working well

//表格编码就像......

<form id="basic" method="post" name="basic"> 
<select class="select-style gender" name="eid">
<option value="blank">Please Select E-MITRA ID</option> 
 <option value="****">*****</option></select>
  <?php echo $idErr;?>

<p class="contact"><label for="bid">m/s Serial No</label></p> 
<input type="text" name="miatm" value ="<?php if (isset($miatm)) echo $miatm; ?>"/> <?php echo $miErr; ?>

 ........more

它运作良好,但我知道它可以改进。它可能是这样的

$dupesql = "SELECT * FROM table where (uid= '$eid' OR ***= '$miatm' OR **= '$**')";

  $duperaw = mysql_query($dupesql);
 if (mysql_num_rows($duberaw) > 0) {.....  }

但在此我无法向用户显示他输入的内容重复.... ID / Mno / etc。 请建议更好的方式

1 个答案:

答案 0 :(得分:0)

您仍然可以向用户显示他输入的内容。这是方法:

您不需要从表中选择所有字段。只需选择要在其上进行重复检查的那5个字段。

获得结果后,可以使用foreach / for循环来检查哪个列符合用户输入的值。无论哪一个,已经进入了。

$error_array = array();
foreach($duperaw as $this_row)
{
    if($this_row['uid'] == $eid) 
        $error_array[] = 'User ID Already Entered';

    if($this_row['m_sno'] == $miatm) 
        $error_array[] = 'Machine ID Already Entered';
    .. .. ..
}

然后显示包含错误的完整数组。