我有一个带复选框的表我想在数据库中插入一行的特定隐藏值,该行由用户使用checbox选择。但是,当我曾经在数据库中保存记录时。它只插入一条甚至未选中的记录,并且是该站点表格中的顶级记录。 这是我的代码
<?php
$i = 0;
<td><?php echo $record['a'];?></td>
<td><?php echo $record['name']; ?>
<input type="hidden" name="name[]" value="<?php echo $record['name']; ?>"</td>
<td><?php echo $record['contact'];?>
<input type="hidden" name="contact[]" value="<?php echo $record['contact']; ?>"
</td>
<td><?php echo $record['district'];?>
<input type="hidden" name="district[]" value="<?php echo $record['district']; ?>"
</td>
<td>
<input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $i++;?>" />
</td>
<?php }?>
<input type="submit" value="Save" name="save" />
<?php
if ($_POST['save'])
{
foreach ($_POST['checkbox'] as $i)
{
$save = "insert into tablename(id,name,contact,district) values (NULL, '{$_POST['name']'[$i]}'{$_POST['contractorname'][$i]}','{$_POST['district'][$i]}')";
mysql_query($save) or die("Mistake in Query");
}
echo "Record saved Successfully";
}
?>
答案 0 :(得分:0)
您的输入元素周围没有foreach循环,或者至少它不在您发布的代码部分中。但是在提交按钮之前的}
让我假设在代码中有一个循环开始。
您在该循环中设置$i = 0;
,稍后使用echo $i++
增加该复选框的值。但每次(假设)循环运行时,$i = 0;
会将您的计数器重置为0
。这会导致您的所有复选框都具有相同的值0
。要解决此问题,请在循环开始之前设置$i = 0;
。
答案 1 :(得分:0)
首先,在将输入插入数据库之前,始终清理输入。否则你很容易受到SQL注入攻击。使用mysql_real_escape_string()之类的函数。另外,不推荐使用PHP中的mysql库,你应该考虑使用MySQLi或PDO:MySQL。
答案 2 :(得分:0)
你设置$ i = 0;在那个循环中所以每次循环运行时,$ i = 0;将您的计数器重置为0.这会导致所有复选框具有相同的值0.要解决此问题,请设置$ i = 0;在循环开始之前