我正在尝试将表单值插入到具有几个必填字段的数据库中,但在插入之前我想检查数据库中是否已存在任何相同的值。为此我的代码是
<?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。 请建议更好的方式
答案 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';
.. .. ..
}
然后显示包含错误的完整数组。