我尝试使用php将复选框值插入mysql数据库。
HTML输入:
<input type="checkbox" name="subject[]" value="notepad"><label>Notepaa+</label>
<input type="checkbox" name="subject[]" value="java"><label>java</label>
<input type="checkbox" name="subject[]" value="Openoffice<label>OpenOffice</label>
<input type="checkbox" name="subject[]" value="python"><label>python</label>
<input type="checkbox" name="subject[]" value="virtualbox<label>VirtualBox</label>
<input type="checkbox" name="subject[]" value="chrome"><label>Chrome</label>
但这有一个问题,如果我在HTML代码中检查多个复选框,它会将两条记录插入数据库。
php代码
<?php
include("insert.php");
$subject = $_POST['subject'];
$s=implode(" ",$subject);
if($_POST["submit"]=="submit")
{
$query="INSERT INTO `test` (`subject`) VALUES ('$s')";
mysql_query($query) or die(mysql_error());
}
if( $_POST )
{
$subject = $_POST['subject'];
echo $query;
}
?>
如何修复此错误?
答案 0 :(得分:0)
问题不在SQL查询中。发生这种情况是因为当您提交表单时,PHP代码(尤其是行mysql_query($query) or die(mysql_error());
)会被调用两次。
请查看下面的PHP提交教程,并了解正确的方法。
答案 1 :(得分:0)
INSERT INTO `test` (`subject`) VALUES (....)
预计列subject
的单个值不是值列表。
这意味着您的SQL一次只能插入一行。如果你插入了多行,那么它就来自其他地方。
无论
这里的SQL不是问题。
答案 2 :(得分:0)
你的实现似乎是正确的,但我认为复制的原因是html ..你的html标签不正确:
<input type="checkbox" name="subject[]" value="Openoffice<label>OpenOffice</label>
和
<input type="checkbox" name="subject[]" value="virtualbox<label>VirtualBox</label>
您忘记了>
input
标记
<input ... >
它应该是:
<input type="checkbox" name="subject[]" value="Openoffice" /><label>OpenOffice</label>
<input type="checkbox" name="subject[]" value="virtualbox /><label>VirtualBox</label>
有时,在解析输入值时,php可能会混淆在数组中添加的内容..所以当你内爆时,可能会出现重复值或意外结果......
我认为你的代码在那之后会正常工作......