我为复选框创建了一个HTML表单:
<td>
<input type="checkbox" name="mode[]" id="mode" value="sweet"/>Sweet<br />
<input type="checkbox" name="mode[]" id="mode" value="sour"/>Sour<br />
<input type="checkbox" name="mode[]" id="mode" value="creamy"/>Creamy<br />
<input type="checkbox" name="mode[]" id="mode" value="bland"/>Bland<br />
</td>
这是php页面的动作代码:
for ($i=0; $i<sizeof($mode); $i++)
{
$mode[$i] = mysql_real_escape_string($mode[$i]);
$query = "INSERT INTO frutesdetails(fruitname,fruitcolor,seasonfrom,seasonto,fruitetaste,fruitbenefit) VALUES ('{$fruitname}', '{$category}', '{$startdate}', '{$enddate}','.$mode[$i].','{$fruitbenefit}')";
}
$insertresults = mysql_query($query) or die(mysql_error());
?>
我只获得一个复选框值而不是全部。
答案 0 :(得分:5)
每次循环时都必须将查询传递给数据库。
目前,您为每个提交的项目构建一个查询,但只将最后一个项目传递给数据库。
移动mysql_query
调用,使其位于循环内。
也就是说,最好转移到现代API(如PDO),在循环生成之前将查询构建为预处理语句,然后在循环中使用数据执行它。
答案 1 :(得分:0)
更新:已对此进行了修改,以便更好地回答问题
根据您的回答,您似乎希望将所有模式响应加入到一起并执行单个插入查询。
顺便提及:
修订代码:
foreach ($mode as $m)
{
$emodes[] = mysql_real_escape_string($m);
}
$emode = join( ',' , $emodes);
$query =<<<EOF
INSERT INTO frutesdetails(fruitname,fruitcolor,seasonfrom,seasonto,fruitetaste,fruitbenefit)
VALUES ('{$fruitname}', '{$category}',
'{$startdate}','{$enddate}','{$emode}','{$fruitbenefit}')
EOF;
$insertresults = mysql_query($query) or die(mysql_error());
?>