繁体   English   中英

如何在mysql数据库中编辑最后插入的数据?

[英]how to edit the last inserted data in mysql database?

嗨,大家好,我在这里要做的就是能够更新原始评论。 但是按照我的代码现在的样子,它只是不断添加具有新行ID的新内容。 如何删除具有相同行ID的原始内容,并使用新内容进行更新?

<?php 
require 'classes/Database.php';
$database = new Database;
$post = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);

if(isset($post['submit'])){
    $title = $post['title'];
    $body = $post['body'];

    $database->query('INSERT INTO posts (title, body) VALUES(:title, :body)');
    $database->bind(':title', $title);
    $database->bind(':body', $body);
    $database->execute();
    if($database->lastInsertId()){
       echo '<p>Post Added!</p>';
    }
} 
if(isset($post['submit'])){
        $id = $database->lastInsertId();
        $title = $post['title'];
        $body = $post['body'];
        $database->query('UPDATE posts SET title = :title, body = :body WHERE id = :id');
        $database->bind(':title', $title);
        $database->bind(':body', $body);
        $database->bind(':id', $id);
        $database->execute();
        header('location:index.php');
 }


if(isset($post['delete'])){
    $delete_id = $_POST['delete_id'];
    $database->query('DELETE FROM posts WHERE id = :id');
    $database->bind(':id', $delete_id);
    $database->execute();
}


$database->query('SELECT * FROM posts');
$rows = $database->resultset();
?>
<h1>Add Post</h1>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
    <label>Post ID</label><br />
    <input type="text" name="id" placeholder="Specify ID" /><br /><br />
    <label>Post Title</label><br />
    <input type="text" name="title" placeholder="Add a Title..." /><br /><br  
/>
<label>Post Body</label><br />
<textarea name="body"></textarea><br /><br />
<input type="submit" name="submit" value="Submit" />

   <h1>Posts</h1>
    <div>
   <?php foreach($rows as $row) : ?>
    <div>
    <h3><?php echo $row['title']; ?></h3>
    <p><?php echo $row['body']; ?></p>
    <br />
    <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
        <input type="hidden" name="delete_id" value="<?php echo $row['id'];   
     ?>">
        <input type="submit" name="delete" value="Delete" />
      </form>
    </div>
   <?php endforeach; ?>
  </div>

乍一看,您似乎永远也不会进入UPDATE,因为您的if和elseif具有相同的条件isset($ post ['submit'])。 我不知道您的代码中还有什么,但是您需要使用其他逻辑来确定这是否是编辑。

您应该在插入后使用lastInsertId值。

例如:

if(isset($post['submit'])){
    $title = $post['title'];
    $body = $post['body'];

    $database->query('INSERT INTO posts (title, body) VALUES(:title, :body)');
    $database->bind(':title', $title);
    $database->bind(':body', $body);
    $database->execute();
    $lastId = $database->lastInsertId();
    if($lastId){
       echo '<p>Post Added!</p>';
    }
}

接着:

...
$database->bind(':id', $lastId);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM