PHP发布复选框数据

时间:2014-02-21 16:11:00

标签: php html database post insert

我正在进行调查,我想将数据发布到我的数据库。但是我遇到了一个问题,如果我想发布复选框数据,它只会发布最后一个复选框。希望我能得到一些帮助,这是代码:

HTML

<form name="x" id="submit1" action="confirm_medici.php" method ="post" onsubmit="validator();return false;" target="_self">

<input type="checkbox" name="opsystem" value="Android">Android<br>
<input type="checkbox" name="opsystem" value="Windowsphone">Windows Phone<br>
<input type="checkbox" name="opsystem" value="Ios">IOS (Apple)<br><br>
Else: <input type="text" name="opsystem" size="75"><br>


PHP

 <?php
$con=mysqli_connect("x","x","x","x");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


$question1=$_POST['opsystem']; 

$sql="INSERT INTO medici (colum1)
VALUES
('$question1')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "1 record added";

mysqli_close($con);
?>

2 个答案:

答案 0 :(得分:3)

重命名该字段,使名称以字符[]结尾。然后,PHP将它作为数组公开,而不是转储除最后一项之外的所有项。

name="opsystem[]"

$_POST['opsystem']

答案 1 :(得分:1)

如果您的复选框是多选项,则只需将[]添加到复选框名称的末尾即可。

<input type="checkbox" name="opsystem[]" value="...">...</input>

然后在php:

$checkbox = $_POST['opsystem'];

foreach ($checkbox as $item) {
    ... Database Insertion Code For Each Checkbox Here
}

在foreach中,您可以运行查询以将答案插入数据库。或者你可以内爆数组而不是在它上面运行foreach,并将新字符串插入数据库。

使用Implode:

$checkbox = $_POST['opsystem'];

$checkboxResults = implode(',', $checkbox);

$sql = 'INSERT INTO medici (column1) VALUES ('.$checkboxResults.')';

我还要指出这个SQL不好!它对sql注射开放。