这是我的代码,我正在尝试在数据库中添加多个项目,在这5个项目中我的一个项目是默认的,当我检查项目编号3时,在数据库项目3中值保存为0和第一个项目值保存为1。
这是不正确的,我希望在检查项目3时比在提交表单之后而不是在数据库项目3中保存为1,否则保存值为0.
请任何人告诉我如何做这项工作
<?php
if (isset($_POST['action'])) {
$prods = count($_POST['prod']);
for ($i = 0; $i < $prods; $i++) {
$prod = $_POST['prod'][$i];
$default = (!empty($_POST['is'][$i])) ? 1 : 0;
mysql_query("INSERT INTO `items` (`prod`, `is_default`)VALUES('{$prod}', '{$default}')");
}
}
?>
<form action="" method="post">
<input type="hidden" name="action" value="add">
<span>Item Name</span> <span style="padding-left:100px">Is default</span> <br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="1">Item 1<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="1">Item 2<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="1">Item 3<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="1">Item 4<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="1">Item 5<br>
<input type="submit" value="Save">
</form>
答案 0 :(得分:1)
首先,更改您的复选框value
属性,如下所示:
value="0"
,value="1"
,value="2"
等
然后在表单处理期间,获取$default
这样的值:
$default = (isset($_POST['is'][0]) && $_POST['is'][0] == $i) ? 1 : 0;
所以你的代码应该是这样的:
<强> HTML:强>
<form action="" method="post">
<input type="hidden" name="action" value="add">
<span>Item Name</span> <span style="padding-left:100px">Is default</span> <br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="0"> Item 1<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="1">Item 2<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="2">Item 3<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="3">Item 4<br>
<input type="text" name="prod[]" value="">
<input type="radio" name="is[]" value="4">Item 5<br>
<input type="submit" value="Save">
</form>
<强> PHP:强>
if(isset($_POST['action'])){
$prods = count($_POST['prod']);
for($i=0; $i < $prods; $i++){
$prod = $_POST['prod'][$i];
$default = (isset($_POST['is'][0]) && $_POST['is'][0] == $i) ? 1 : 0;
$query = "INSERT INTO `items` (`prod`, `is_default`)VALUES('{$prod}', '{$default}')";
if(mysql_query($query)){
// success
}else{
// error
}
}
}
<强>图片的标题说明:强>
不要使用mysql_*
函数,从PHP 5.5开始不推荐使用它们,并且在PHP 7.0中完全删除它们。请改用mysqli
或pdo
。 And this is why you shouldn't use mysql_*
functions。
您的查询容易受到SQL注入的影响。始终准备,绑定并执行您的查询以防止任何类型的SQL注入。 And this is how you can prevent SQL injection in PHP