pdo更新mysql中的一行

5t7ly7z5  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(275)

我只想用php更新表中的一行。但这不可能!idk为什么!这是我的密码

if (isset($_POST['publish'])) {
       try {
        $post_id = $_POST['post_id'];
        // $name = $_POST['name'];
        // $email = $_POST['email'];
        // $body = $_POST['body'];
        $status =1;
        $sql2 = 'UPDATE cmts SET
                status=:status,

                 WHERE post_id=:id limit 1';
        $stmt2 = $pdo->prepare($sql2);
        $stmt2->execute(['status' => $status, 'id' => $post_id]);
        header('Location: comment.php');
       }
       catch(Exeption $e) {
           echo "error". $e->getMessage();
       }    
      }

以及html代码:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
            <input type="hidden" name="post_id" value="<?php echo $cmt->post_id; ?>">
            <!-- <input type="hidden" name="name" value="<?php //echo $cmt->name; ?>">
            <input type="hidden" name="email" value="<?php //echo $cmt->email; ?>">
            <input type="hidden" name="body" value="<?php //echo $cmt->body; ?>"> -->
            <input type="submit"  value="Publish" name="publish">
        </form>

我只想将一列(状态)更新为1。我添加了另一个要更新的列,它确实更新了行,但是它影响了timestamp列,我不想这样做。这是我table的照片:

更新:谢谢你的回答。它代表状态后面的逗号(,)。我把它拿走了,一切正常。

pvcm50d1

pvcm50d11#

在mysql中,时间戳列通常在更新行时更新。如果你不´如果您不想更新它,您需要这样定义它,以便时间戳获得创建行的日期和时间,而不是更新

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

您可以在这里阅读更多关于时间戳配置的信息

相关问题