我正在进行调查,我想将数据发布到我的数据库。但是我遇到了一个问题,如果我想发布复选框数据,它只会发布最后一个复选框。希望我能得到一些帮助,这是代码:
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);
?>
答案 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注射开放。