我试图插入多个复选框的值,如果它们被检入我的数据库中的一列。
这是我的......
if(!empty($_POST['dyuhdb'])) {
foreach($_POST['dyuhdb'] as $dyuhdb) {
$dyuhdb . ",";
}
}
$sql = "INSERT INTO MRF (Q1) VALUES ('". $dyuhdb ."')";
<div class="checkbox">
<label><input type="checkbox" name="dyuhdb[]" value="1">1</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="dyuhdb[]" value="2">2</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="dyuhdb[]" value="3">3</label>
</div>
出于某种原因,如果勾选了1和2,那么只有2个会进入我的数据库吗?
我做错了什么?
答案 0 :(得分:1)
问题是由于以下行,
$dyuhdb . ",";
在foreach
循环的每次迭代中,您都会覆盖变量$dyuhdb
。而只需使用implode()
函数将数组元素与字符串(,
)连接起来,并在INSERT
查询中使用它,如下所示:
if(isset($_POST['dyuhdb']) && count($_POST['dyuhdb'])){
$checkbox_values = implode(",", $_POST['dyuhdb']);
$sql = "INSERT INTO MRF (Q1) VALUES ('". $checkbox_values ."')";
// execute your query
}
旁注:了解prepared statements因为您的查询现在容易受到SQL注入的影响。另请参阅how you can prevent SQL injection in PHP。
答案 1 :(得分:0)
您的查询中会有额外的,
。您可以通过使用内置的implode
函数而不是循环发布数据来避免相同的情况。
if(!empty($_POST['dyuhdb'])) {
/* foreach($_POST['dyuhdb'] as $dyuhdb) {
$dyuhdb . ",";
}*/
$dyuhdb = implode(",",$_POST['dyuhdb']);
}