我对 php 有点陌生,在将 HTML 表单中的值获取到我的数据库时遇到了一些困难。我遇到问题的列是 TINYINT。根据我的理解,这可以有 2 个值,1 或 0,但我没有在我的数据库中得到这个结果。表格的其余部分似乎相应地起作用。这是我的代码和逻辑的示例;
HTML 表单如下所示:
<form action="" method="post" id="createBoard" enctype="multipart/form-data">
<label for="boardTitle">Name</label>
<input type="text" name="boardTitle" id="boardTitle">
<label for="privateSwitch">Private?</label>
<input id="privateSwitch" name="status" type="checkbox" checked>
<br>
<input type="submit" value="Submit" />
</form>
html之前的PHP逻辑是:
if (!empty($_POST)) {
try {
// create prepared statement
$newBoard = new Board();
$newBoard->setBoardName($_POST["boardTitle"]);
if (empty($_POST['status'])){
$privateSwitch = 0;
} else {
$privateSwitch = 1;
}
$newBoard->setPrivateSwitch($privateSwitch);
if ($newBoard->create()){
$feedback = "Board saved";
header("Location: user_uploads.php?success=true");
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
包含的类如下所示:
setter 和 getter :
public function setPrivateSwitch($privateSwitch)
{
$this->privateSwitch = $privateSwitch;
}
public function getPrivateSwitch()
{
return $this->privateSwitch;
}
创建“板”的功能:
public function create()
{
$conn = Db::getInstance();
$stmt = $conn->prepare("INSERT INTO board (boardTitle, userID, private) VALUES (:boardTitle, :userID, :private)");
$stmt->bindValue(":boardTitle", $this->boardTitle);
$stmt->bindValue(":userID", $_SESSION["id"]);
$stmt->bindValue(":private", $this->private);
return $stmt->execute();
}
正在数据库中创建 Board,但专用行仍获取 NULL 值。它看起来像这样:
我在这里缺少什么? 感谢您的时间和反馈!
最佳答案
setter 函数似乎是问题所在。尝试将 setter 函数更改为:
public function setPrivateSwitch($privateSwitch)
{
$this->private = $privateSwitch;
}
和 setter/getter :
public function getPrivateSwitch()
{
return $this->private;
}
关于php - HTML 表单在数据库中发布正确的值(TinyINT 除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43807469/