php mysql问题,检查是否在插入之前存在记录

时间:2014-01-02 07:54:18

标签: php mysql

我对下面给出的代码有点问题。当我使用name="staff_number[]"时,它会插入记录,即使它已经在数据库表中,所有内容都可以正常,当我使用name="staff_number"时,它会检查记录并给我警报框但是当插入记录,如果它不在数据库中,它只存储工作人员编号的第一个数字,如工作人员编号12345它只存储1.可以任何人帮助这个记录我认为只有一个小问题我不是能够理清。

PHP代码:

<select placeholder='Select' style="width:912px;" name="staff_number[]" multiple />
<?php 
$query="SELECT * FROM staff";
$resulti=mysql_query($query);
while ($row=mysql_fetch_array($result)) { ?>
<option value="<?php echo $row['staff_no']?>"><?php echo $row['staff_name']?></option>
<?php } ?>
</select>

Mysql代码:

$prtCheck = $_POST['staff_number'];
$resultsa = mysql_query("SELECT * FROM staff where staff_no ='$prtCheck' ");
$num_rows = mysql_num_rows($resultsa);
if ($num_rows > 0) {
echo "<script>alert('Staff No $prtCheck Has Already Been Declared As CDP');</script>";
$msg=urlencode("Selected Staff ".$_POST['st_nona']." Already Been Declared As CDP");
echo'<script>location.href = "cdp_staff.php?msg='.$msg.'";</script>';
}

插入查询

$st_nonas    =  $_POST['st_nona'];
$t_result    = $_POST['st_date'];
$p_result    = $_POST['remarks'];
$arrayResult = explode(',', $t_result[0]);
$prrayResult = explode(',', $p_result[0]);     $arrayStnona = $st_nonas;
$countStnona = count($arrayStnona);


for ($i = 0; $i < $countStnona; $i++) {
    $_stnona  = $arrayStnona[$i];
    $_result  = $arrayResult[$i];
    $_presult  = $prrayResult[$i];

    mysql_query("INSERT INTO staff(st_no,date,remarks) 
        VALUES ('".$_stnona."', '".$_result."', '".$_presult."')");
    $msg=urlencode("CDP Staff Has Been Added Successfully");
    echo'<script>location.href = "cdp_staff.php?msg='.$msg.'";</script>';
 }

4 个答案:

答案 0 :(得分:3)

您的$_POST['staff_number']实际上是array

所以你必须像$_POST['staff_number'][0]这样访问它,0是一个索引号。

答案 1 :(得分:1)

如果select的名称是staff_number [],则$ prtCheck将是一个数组,因此您的检查查询必须处于循环中以确保您的检查条件。

如果名称是staff_number,那么下面的代码就可以了。

答案 2 :(得分:0)

amit的答案是正确的,但我会完成它。

由于使用了staff_number []和[],你的HTML表单给你的PHP一个数组,它似乎与“multiple”属性合法。 所以你必须循环给定的值,你用一个for和很多无用的变量来做,而不是真正检查它。很长一段时间,我们都有FOREACH循环结构。

如果我知道什么是'st_nona',st_date'和'remarks'值,我可以帮助你更多。

答案 3 :(得分:0)

根据您的问题,您在存储数据方面遇到了困难。这个问题与$ _POST数组有关。

与您的问题一样,我们从选择中选择了以下ID:1,2,3,4 它只存储1。 这是因为您在插入数据时没有使用循环。 如下所示:

<?php
foreach($_POST['staffnumber'] as $staffnumber){
$query=mysql_query("select * from staff where staff_number =".$staffnumber);
if(mysql_num_rows($query)>0){
//action you want to perform
}else{
//action you want to perform like entering records etc. as your wish
}
}
?>

我想建议您使用数据库中的唯一键作为字段,并使用PHP PDO作为数据库,因为它是安全的,最适合OOP。 如果您有任何疑问,请与我们联系。