php和mysql插入复选框值错误

时间:2015-03-06 04:51:43

标签: php mysql

我尝试使用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;
}
?>

如何修复此错误?

3 个答案:

答案 0 :(得分:0)

问题不在SQL查询中。发生这种情况是因为当您提交表单时,PHP代码(尤其是行mysql_query($query) or die(mysql_error());)会被调用两次。

请查看下面的PHP提交教程,并了解正确的方法。

  1. http://php.net/manual/en/tutorial.forms.php
  2. http://www.w3schools.com/php/php_forms.asp

答案 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可能会混淆在数组中添加的内容..所以当你内爆时,可能会出现重复值或意外结果......

我认为你的代码在那之后会正常工作......