将MULTIPLE复选框插入数据库列

时间:2016-05-18 14:08:12

标签: php html mysql

我试图插入多个复选框的值,如果它们被检入我的数据库中的一列。

这是我的......

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个会进入我的数据库吗?

我做错了什么?

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']);
}