-1

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

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

4

2 回答 2

5

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

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

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


也就是说,您最好转向现代 API(如 PDO),在循环存在之前将查询构造为准备好的语句,然后在循环中使用您的数据执行它。

于 2013-07-17T13:19:45.573 回答
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()); 


?>
于 2013-07-17T13:27:03.600 回答