php和mysql插入复选框值错误


php and mysql insert checkbox value error

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

如何修复此错误?

问题不在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

您的实现似乎是正确的,但我认为重复的原因是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可能会混淆在数组中添加什么。。因此,当你崩溃时,有可能出现重复的价值观或意外的结果。。

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

INSERT INTO `test` (`subject`) VALUES (....)

subject应为单个值,而不是值列表。

这意味着您的SQL一次只插入一行。如果你插入了多行,那么它来自其他地方。

任一

  • 你得到了两次数据
  • 存在同一查询的另一个执行

您的SQL不是问题所在。