Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 复选框将1或0插入SQL数据库_Php_Mysql_Checkbox_Pdo - Fatal编程技术网

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

Php 复选框将1或0插入SQL数据库,php,mysql,checkbox,pdo,Php,Mysql,Checkbox,Pdo,我正在建立一个系统,从一个问题中得到许多答案。因此,用户可以单击按钮动态添加答案。我希望用户能够勾选正确答案旁边的复选框,然后将其插入数据库(1是正确的) 以下是我所拥有的: HTML: 像这样: SQL插入ab_名称,但如果勾选或取消勾选,ab_correct始终设置为1。请对此提供指导?您可以使用for循环,而不是foreach。首先,您需要确保两个数组具有相同数量的元素 if(count($_POST['ab_name']) != count($_POST['ab_correct']))

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

以下是我所拥有的:

HTML:

像这样:


SQL插入
ab_名称
,但如果勾选或取消勾选,
ab_correct
始终设置为
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();
}
for($i=0;$ibindValue(':ab\u name',$\u POST['ab\u name'][$i]);
$stmt->bindValue(':ab_correct',$u POST['ab_correct'][$i]);
$stmt->execute();
}

但是,您没有在$ab\u correct数组中循环。如果未选中
ab\u correct
,它将不会被发送,您是否运行JS来检查这一点?
$ab\u correct
$\u POST['ab\u correct']
是数组。谢谢-这就是我想要的,似乎如果勾选其中一个复选框,它将为我不理解的所有答案插入1。谢谢你的回答。它没有到达退出语句,这很好。但是我收到:“SQLSTATE[HY093]:无效参数编号:绑定变量的数量与令牌的数量不匹配“哦,您必须在for循环中添加
$stmt=$db->prepare($sql);
,以便每次都重置绑定。原来是我将sql放在for循环之后而不是之前。答案已解决谢谢!
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();
}
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();

}