Php 遍历数组并将数据上载到数据库中的行中

Php 遍历数组并将数据上载到数据库中的行中,php,mysql,post,checkbox,Php,Mysql,Post,Checkbox,我有几个复选框,如果选中,我想将它们的值插入数据库 HTML: <input type="checkbox" id="m1" name="category[]" value="1"/> <input type="checkbox" id="m2" name="category[]" value="2"/> <input type="checkbox" id="m3" name="category[]" value="3"/> <input type="c

我有几个复选框,如果选中,我想将它们的值插入数据库

HTML:
<input type="checkbox" id="m1" name="category[]" value="1"/>
<input type="checkbox" id="m2" name="category[]" value="2"/>
<input type="checkbox" id="m3" name="category[]" value="3"/>
<input type="checkbox" id="m4" name="category[]" value="4"/>
<input type="checkbox" id="m5" name="category[]" value="5"/>
如果我只单击前3个复选框

我是这样想的:

| USERID | MACHINEID | 
----------------------
|      1 |         1 |  
|      1 |         2 |   
|      1 |         3 |  
$array_zone = $_POST['category'];
if(isset($_POST['category']))
{
 for($i = 0; $i < count($array_zone); $i++)
{
 mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) VALUES ('$user_id', '  $array_zone[$i]')");
 }
} 
$array\u zone=$\u POST['category'];
如果(isset($_POST['category']))
{
对于($i=0;$i
如果您的machineid列是int,则“$array\u zone[$i]”中的空格可能会给您带来麻烦。您正在检查mysql错误吗?

试试这个,看起来您有空白问题

mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) VALUES ('$user_id', '$array_zone[$i]')");
此外,如果有多个,最好像这样插入它们

 mysql_query("INSERT INTO `userPlanDetail` (`user_id`, `machine_id`) 
VALUES ('$user_id', '$array_zone[$i]'), ('$user_id', '$array_zone[$i++]')");
它们作为单个语句插入的速度要快得多

请查看此处以了解更多信息


即使在测试中,mysql_*仍然是非常糟糕的做法

逻辑不正确$_POST可能有数据,但类别部分可能为空。您的示例代码也易受攻击,因此根本不要使用此代码。感谢您提供的信息,但现在我只是尝试将复选框输入到数据库中。在此之后对其进行保护是简单的。我还想提及的是,在将值直接放入查询之前,应该对其进行转义。查找SQL注入。目前我没有检查错误。我刚做了,它说外键约束失败了。用户id和机器id都是外键