php一次使用多个ID将数据插入数据库?
我有一张表格。里面有许多复选框。因此,当有人选中一些复选框(假设我们选中了两个复选框磁盘空间、处理器)并单击save时。然后它应该像这样保存在数据库中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=
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." ");
}