我如何存储一个值从一个表单到mySQL数据库


How can I store a value from a form into mySQL database?

我制作了一个表单,我想将cat的输入值存储到我的SQL数据库中。下面是我的php代码:

<?php
    $cat = $_POST['cat'];
    if ( !empty($_POST)) {
        $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "UPDATE orders set cat = ?  WHERE id = '$id'";           
            $q = $pdo->prepare($sql);
            $q->execute(array($cat));
            Database::disconnect();
    }

?> 

这是我的表单:

<form action="index.php" method="post">
<div id="modal-content" class="modal fade" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h3><?php echo $id ?></h3>
            </div>
            <div class="modal-body">
                <p>
                    <input type="text" name="cat" />
                </p>
            </div>
            <div class="modal-footer"> 
                  <button type="submit" class="btn btn-primary">Save</button>
            </div>
        </div>
    </div>
</div>
  </form>       

有人知道为什么这不起作用吗?没有数据存储到数据库中。数据库连接正常。谢谢你

* * * *更新:

我发现我的错误了。结果如下:
    <?php
        $cat = $_POST['cat'];
        $id = $_POST['id'];
        if ( !empty($_POST)) {
            $pdo = Database::connect();
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $sql = "UPDATE orders set cat = ?  WHERE id = '$id'";           
                $q = $pdo->prepare($sql);
                $q->execute(array($cat));
                Database::disconnect();
        }

    ?> 

    <form action="index.php" method="post">
    <div id="modal-content" class="modal fade" tabindex="-1" role="dialog">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h3><?php echo $id ?></h3>
                </div>
                <div class="modal-body">
                    <p>
                        <input type="text" name="cat" />
                     <input type="hidden" name="id" value="1"/>
                    </p>
                </div>
                <div class="modal-footer"> 
                      <button type="submit" class="btn btn-primary">Save</button>
                </div>
            </div>
        </div>
    </div>
      </form>       

正如在评论中已经提到的,您有一个未定义的$id

    $cat = $_POST['cat'];
    if ( !empty($_POST)) {
        $pdo = Database::connect();
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "UPDATE orders set cat = ?  WHERE id = '$id'";           
            $q = $pdo->prepare($sql);
            $q->execute(array($cat));
            Database::disconnect();
    }

?> 

应该改成:

在你的HTML中:

<input type="hidden" name="check"/>

然后在PHP中:

if(isset($_POST['check'])){
        $cat = $_POST['cat'];
        $id = $_POST['id'];
            $pdo = Database::connect();
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $sql = "UPDATE orders set cat = ?  WHERE id = '$id'";           
                $q = $pdo->prepare($sql);
                $q->execute(array($cat));
                Database::disconnect();
        }
    ?>

您没有做任何错误检查。试试这个:

if ( ! $q->execute(array($cat))) {
    echo "ERROR: ".$pdo->errorInfo();
}

cat已经在您的数据库列?

如果没有,你需要做一个。否则你不能使用update.