【发布时间】:2020-09-05 23:15:17
【问题描述】:
我正在开发一个 html 表单,它的数据被保存到 MS-SQL 服务器数据库中。我能够将所有其他字段保存到数据库中它们各自的列中,但是复选框字段将值保留为空。 我对这个概念不是很熟悉。
代码如下:
form.php
<form class="cmxform" action ='functions/Form.php' method="post">
<div class="form-row">
<h3> Contact Information</h3>
<div class="form-group col-md-4">
<label for="fName">First Name </label>
<input type="text" class="form-control" id="fName" name="fName">
</div>
<div class="form-group col-md-4">
<label for="lName">Last Name</label>
<input type="text" class="form-control" id="lName" name="lName">
</div>
<div class="form-group col-md-4">
<label for="email">Email </label>
<input type="email" class="form-control" id="email" name="email">
</div>
</div>
<div class="form-group col-md-12">
<h3>Category: Please choose one of the following: </h3>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Vegetarian
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Ham
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Turkey
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Other
</label>
</div>
函数/form.php:
<?php
require_once 'connection.php';
$fName = filter_input(INPUT_POST, "fName") ? filter_input(INPUT_POST, 'fName') : null;
$lName = filter_input(INPUT_POST, "lName") ? filter_input(INPUT_POST, 'lName') : null;
$email = filter_input(INPUT_POST, "email") ? filter_input(INPUT_POST, 'email') : null;
$tempCheck1 = filter_input(INPUT_POST, "defaultCheck1") ? filter_input(INPUT_POST, 'defaultCheck1') : null;
$tempCheck2 = filter_input(INPUT_POST, "defaultCheck2") ? filter_input(INPUT_POST, 'defaultCheck2') : null;
$tempCheck3 = filter_input(INPUT_POST, "defaultCheck3") ? filter_input(INPUT_POST, 'defaultCheck3') : null;
$tempCheck4 = filter_input(INPUT_POST, "defaultCheck4") ? filter_input(INPUT_POST, 'defaultCheck4') : null;
$sqlInsert = "INSERT INTO dbo.form (fName, lName, email, category ) VALUES (:fName, :lName, :email, :defaultCheck1, :defaultCheck2, :defaultCheck3, :defaultCheck4)
$stmt = $conn->prepare($sqlInsert);
$stmt->bindParam(':fName', $fName);
$stmt->bindParam(':lName', $lName);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':defaultCheck1', $tempCheck1);
$stmt->bindParam(':defaultCheck2', $tempCheck2);
$stmt->bindParam(':defaultCheck3', $tempCheck3);
$stmt->bindParam(':defaultCheck4', $tempCheck4);
if ($stmt->execute()) {
$conn->commit();
return true;
} else {
$conn->rollback();
return false;
}
?>
这是表单中唯一一个我无法将数据发送到数据库的框。休息一切正常。
【问题讨论】:
-
你错过了复选框的名称属性
-
你有语法错误,看语法高亮;您没有关闭线路并忘记了报价。
-
您在哪一行看到语法错误?实际上是一个巨大的表格,可能是在过滤掉那里的代码时出现语法错误。
-
可能只是复制/粘贴错误
-
$sqlInsert线路未正确关闭。
标签: php sql-server database forms checkbox