我对下面给出的代码有点问题。当我使用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>';
}
答案 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。 如果您有任何疑问,请与我们联系。