php一次将数据插入到具有多个ID的数据库中?

时间:2014-01-22 10:20:15

标签: php mysql arrays

我有一张表格。里面有一些复选框。所以当有人选择一些复选框时(假设我们选择了两个复选框Disk Space,Processor)并点击了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."')";

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

5 个答案:

答案 0 :(得分:1)

<form id="formID" method="post" action="" enctype="multipart/form-data">
  <input type="checkbox" name="test[]"  value="Disk space"/>Disk space<br />
  <input type="checkbox" name="test[]"  value="Color"/>Color<br />
  <input type="checkbox" name="test[]"  value="Processor"/>Processor<br />
  <input type="submit" name="save" id="save" value="save"/>
</form>

插入查询应该是

foreach($_POST['test'] as $value) {
    INSERT INTO `ia_attributes`(`attribute_id`, `attribute_name`) VALUES ('', '".$value."')";
}

答案 1 :(得分:0)

<?php
foreach($attribute_values as $value)
{
    $sql = mysql_query("INSERT INTO `ia_attributes`(`attribute_id`, `attribute_name`) VALUES ('', '".$value."')"");
}
?>

它的帮助?

答案 2 :(得分:0)

在执行任何插入查询之前,它还将验证数据。

<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>

然后在PHP中,代码将确保某人只是提交而不检查任何不会尝试执行查询的内容。

if(isset($_POST["save"]) && isset($_POST["type"])){
        $types = $_POST["type"];
        if(sizeof($types) > 0 ){
            foreach($types as $type){
                    $qry= '';
                    $qry = "INSERT INTO `ia_attributes`(`attribute_id`, `attribute_name`) VALUES ('', '".$type."')";
                    // execute the above query

            }
        }
    }   

答案 3 :(得分:0)

在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>

现在在你的php文件中:

foreach($_POST['attrname'] as $attribute_values) {
  mysqli_query("INSERT INTO `ia_attributes`(`attribute_name`) VALUES ('".$attribute_values."')");
}

由于您的表结构attribute_id似乎是主键并且自动递增,因此您无需通过惰性查询插入它。

答案 4 :(得分:0)

<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']是一个数组(如果不是空的),看起来像:

$_POST['attribute_name'][0] = 'Disk'
$_POST['attribute_name'][1] = 'Color'

循环非空数组将允许您将每个值插入表中的单独行(注意:这将为每个循环项运行1个查询):

foreach ($_POST['attribute_name'] as $name)
{
mysql_query("INSERT INTO `ia_attributes` (`attribute_id`, `attribute_name`) VALUES ('', '".mysql_real_escape_string($name)."') ");
}

最佳方法是仅执行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 }