php - HTML 表单在数据库中发布正确的值(TinyINT 除外)

标签 php mysql database forms post

我对 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 值。它看起来像这样:

Screenshot of the Database Table board

Structure of the Database

我在这里缺少什么? 感谢您的时间和反馈!

最佳答案

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/

相关文章:

mysql - 创建表并将查询指定为字段的默认值

php - 如何在 centos 6 32 位中将 php 5.4.40 升级到 5.6?

php - Symfony Twig自定义错误页面导致错误

sql - Oracle 10 中的本地临时表(用于存储过程的范围)

mysql - MySQL 中特定客户的唯一表

java - jhipster 和 liquibase 超时

php - Doctrine 注释加载器失败

php - 如果数据库中存在该值,如何验证该值?

php - 过去 x 个月的排名查询

MySQL 分组两次