复选框将1或0插入SQL数据库

时间:2016-02-26 15:12:27

标签: php mysql checkbox pdo

我正在建立一个从问题中得到很多答案的系统。因此,用户可以单击按钮来动态添加答案。我希望用户能够勾选正确答案旁边的复选框,然后将其插入数据库(1正确)。

这就是我所拥有的:

HTML:

<div id="answers">
 <label class="answer">
  Answer:
   <input type="text" name="ab_name[]" value=""/>
    Correct?
   <input type="checkbox" name="ab_correct[]" value="0">
 </label>
</div>

PHP

$ab_name = $_POST['ab_name'];
$ab_correct = $_POST['ab_correct'];

$sql = "INSERT INTO answers_bank (`ab_name`, `ab_correct` ) VALUES (:ab_name, :ab_correct )";
$stmt = $db->prepare($sql);

foreach ($_POST['ab_name'] as $ab_name) {
$stmt->bindValue(':ab_name', $ab_name);
$stmt->bindValue(':ab_correct', $ab_correct);
$stmt->execute();
}

像这样:

This should give more of an idea:

SQL插入ab_name,但如果勾选或未勾选,则ab_correct始终设置为1。对此有任何指导吗?

2 个答案:

答案 0 :(得分:1)

您可以使用for循环代替foreach。好吧,首先,你需要确保两个数组都有相同数量的元素。

if(count($_POST['ab_name']) != count($_POST['ab_correct']))
    exit('Not same amount of elements.');

然后,遍历每一个。

for($i=0; $i<count($_POST['ab_name']); $i++){
    $stmt->bindValue(':ab_name', $_POST['ab_name'][$i]);
    $stmt->bindValue(':ab_correct', $_POST['ab_correct'][$i]);
    $stmt->execute();
}

答案 1 :(得分:0)

if(isset($_POST['$ab_correct'])){$update = 1;}else{$update = 0;}

foreach ($_POST['ab_name'] as $ab_name) {
$stmt->bindValue(':ab_name', $ab_name);
$stmt->bindValue(':ab_correct', $update);
$stmt->execute();

}