将所有checkBox值获取到数据库中

时间:2013-07-17 13:17:34

标签: php

我为复选框创建了一个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());
    ?>

我只获得一个复选框值而不是全部。

2 个答案:

答案 0 :(得分:5)

每次循环时都必须将查询传递给数据库。

目前,您为每个提交的项目构建一个查询,但只将最后一个项目传递给数据库。

移动mysql_query调用,使其位于循环内。


也就是说,最好转移到现代API(如PDO),在循环生成之前将查询构建为预处理语句,然后在循环中使用数据执行它。

答案 1 :(得分:0)

更新:已对此进行了修改,以便更好地回答问题

根据您的回答,您似乎希望将所有模式响应加入到一起并执行单个插入查询。

顺便提及:

  • 将逃逸的价值重新归结为同样的做法并不是一种好的做法 数组作为原始
  • 研究将输入绑定到mySQL语句而不是物理插入

修订代码:     

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()); 


?>