大家好,我在这里所要做的就是能够更新原始评论。但按照我的代码现在的样子,它只是不断地添加带有新行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);