php一次使用多个ID将数据插入数据库?

php一次使用多个ID将数据插入数据库?,php,mysql,arrays,Php,Mysql,Arrays,我有一张表格。里面有许多复选框。因此,当有人选中一些复选框(假设我们选中了两个复选框磁盘空间、处理器)并单击save时。然后它应该像这样保存在数据库中 id attribute_name 1 Disk space 2 Processor <form id="formID" method="post" action="" enctype="multipart/form-data"> <input type="checkbox" name="" value=

我有一张表格。里面有许多复选框。因此,当有人选中一些复选框(假设我们选中了两个复选框磁盘空间、处理器)并单击save时。然后它应该像这样保存在数据库中

id  attribute_name
1    Disk space
2    Processor


<form id="formID" method="post" action="" enctype="multipart/form-data">
  <input type="checkbox" name=""  value="Disk space"/>Disk space<br />
  <input type="checkbox" name=""  value="Color"/>Color<br />
  <input type="checkbox" name=""  value="Processor"/>Processor<br />
  <input type="submit" name="save" id="save" value="save"/>
</form>
INSERT INTO `ia_attributes`(`attribute_id`, `attribute_name`) VALUES ('', '".$attribute_values."')";

但是这一个在一列中输入了所有选定的属性。

这如何呢?在执行任何插入查询之前,它还将验证数据

<?php
foreach($attribute_values as $value)
{
    $sql = mysql_query("INSERT INTO `ia_attributes`(`attribute_id`, `attribute_name`) VALUES ('', '".$value."')"");
}
?>
<form id="formID" method="post" action="" enctype="multipart/form-data">
  <input type="checkbox" name="type[]"  value="Disk space"/>Disk space<br />
  <input type="checkbox" name="type[]"  value="Color"/>Color<br />
  <input type="checkbox" name="type[]"  value="Processor"/>Processor<br />
  <input type="submit" name="save" id="save" value="save"/>
</form>

在您的HTML代码中执行以下操作:

<form id="formID" method="post" action="" enctype="multipart/form-data">
  <input type="checkbox" name="attrname[]"  value="Disk space"/>Disk space<br />
  <input type="checkbox" name="attrname[]"  value="Color"/>Color<br />
  <input type="checkbox" name="attrname[]"  value="Processor"/>Processor<br />
  <input type="submit" name="save" id="save" value="save"/>
</form>
由于您的表结构是
attribute\u id
似乎是主键并且是自动递增的,所以您不需要通过惰性查询插入它

<form id="formID" method="post" action="" enctype="multipart/form-data">
  <input type="checkbox" name="type[]"  value="Disk space"/>Disk space<br />
  <input type="checkbox" name="type[]"  value="Color"/>Color<br />
  <input type="checkbox" name="type[]"  value="Processor"/>Processor<br />
  <input type="submit" name="save" id="save" value="save"/>
</form>
<input type="checkbox" name=""  value="Disk space"/>Disk space<br />
循环非空数组将允许您将每个值插入表中单独的行中(注意:这将为每个循环项运行1个查询):

最好的方法是只执行一个查询。
大概是这样的:

    $query = '';
    foreach ($_POST['attribute_name'] as $name)
    {
    $query .= " ('', '".mysql_real_escape_string($name)."'), ";
    }
    if (!empty($query))
    {
    $query = substr($query, 0, -2);
    mysql_query("INSERT INTO `ia_attributes` (`attribute_id`, `attribute_name`) VALUES ".$query." ");
     }
更好的方法是:停止使用mysql,切换到mysqli(注意末尾的i)或pdo
}

查看此问题的答案-如何在插入查询中获取
$attribute\u值
?当我选中一个复选框并执行保存操作时,还要为所有复选框指定
name=attrname[]
。但当我选择多个复选框时,它会将所有复选框插入一列。您是否使用我给出的循环尝试了上述代码?以及更改表单以在复选框中添加名称?上面的方法应该有效,您只需添加mysql\u query()或mysqli\u query()来代替//在上面的示例中执行上面的查询。好的..这个方法很有效。但是你能告诉我为什么在刷新页面时会再次插入相同的值吗?那么如何解决这个问题呢?是的,这是因为POST,当你刷新页面时,它会重新发布以前发布的数据。这就是自然。您所能做的就是在完成所有插入操作后将页面重定向到某个位置。
foreach($_POST['attrname'] as $attribute_values) {
  mysqli_query("INSERT INTO `ia_attributes`(`attribute_name`) VALUES ('".$attribute_values."')");
}
<input type="checkbox" name=""  value="Disk space"/>Disk space<br />
<input type="checkbox" name="attribute_name[]"  value="Disk space"/>Disk space<br />
$_POST['attribute_name'][0] = 'Disk'
$_POST['attribute_name'][1] = 'Color'
foreach ($_POST['attribute_name'] as $name)
{
mysql_query("INSERT INTO `ia_attributes` (`attribute_id`, `attribute_name`) VALUES ('', '".mysql_real_escape_string($name)."') ");
}
    $query = '';
    foreach ($_POST['attribute_name'] as $name)
    {
    $query .= " ('', '".mysql_real_escape_string($name)."'), ";
    }
    if (!empty($query))
    {
    $query = substr($query, 0, -2);
    mysql_query("INSERT INTO `ia_attributes` (`attribute_id`, `attribute_name`) VALUES ".$query." ");
     }