如何将表单中的值存储到mySQL数据库中?

时间:2015-09-24 14:56:29

标签: php mysql

我创建了一个表单,我希望将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>       

3 个答案:

答案 0 :(得分:1)

正如评论中已经提到的,您有一个未定义的$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();

        }
    ?>

答案 1 :(得分:0)

cat已经是数据库中的列吗?

如果不是,你需要制作一个。否则你无法使用更新。

答案 2 :(得分:0)

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

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

那会告诉你什么是错的。