我已经浏览了WWW和论坛,但找不到工作的答案。我想更新我的帖子........... / post.php?id = 19
这是我的功能:
function update_user($conn) {
if(isset($_GET['id'])) {
$id = $_GET['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$sql = "UPDATE users SET name =':name', age = ':age' WHERE id=':id'";
$query = $conn->prepare($sql);
$query->execute( array( ':name'=>$name, ':age'=>$age, ':id' => $id ));
}
}
这是我的表格:
<h3>Update a user</h3>
<?php update_user($conn) ?>
<form name="myForm2" method="POST" action= "">
<label>Name:</label><input type="text" id="name" name="name">
<label>Age:</label><input type="text" id= "age" name="age">
<input type="submit" value="add" name="update">
我没有错误,但POST只返回旧记录而没有填写表单中的更新。
希望有人可以帮助我,万分感谢。 BAS
PS。 $ conn是正确的,适用于内容或打印帖子。
答案 0 :(得分:1)
夫妻问题是1,查看个人资料页面$_GET['id']
已设置,因此无论表单是否已提交,它都将执行update_user函数。
您应该检查另一个值以确保提交表单。
另一个问题是带有命名参数的SQL不应该使用引号。
<?php
function update_user($conn)
{
if(isset($_POST['id'])) {
$id = $_POST['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$sql = "UPDATE users SET name = :name, age = :age WHERE id = :id";
$query = $conn->prepare($sql);
$query->execute(array(':name' => $name, ':age' => $age, ':id' => $id));
}
}
?>
<h3>Update a user</h3>
<?php update_user($conn) ?>
<form name="myForm2" method="POST" action= "">
<label>Name:</label><input type="text" id="name" name="name">
<label>Age:</label><input type="text" id= "age" name="age">
<input type="hidden" name="id" value="<?php echo $_GET['id'] ?>">
<input type="submit" value="add" name="update">
</form>
我为id添加了一个隐藏的输入字段,并更改了update_user
的条件以检查POST id而不是GET id。
为了热爱所有编程,请在将$ _POST数据发送到数据库之前对其进行验证。
答案 1 :(得分:0)
阅读Phil的评论,应该这样做,你也应该添加一个$ postId变量来定义当前的帖子ID,以便表格发送正确的帖子进行编辑。
<form name="myForm2" method="POST" action= "post?id=<?= $postId ?>">
<label>Name:</label><input type="text" id="name" name="name">
<label>Age:</label><input type="text" id= "age" name="age">
<input type="submit" value="add" name="update">
答案 2 :(得分:0)
好。我只是创建一个update_post.php文件并以这种方式工作。感谢所有的努力。