我在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仅返回旧记录,而没有填写我的更新。
希望有人能帮助我,谢谢一百万。巴斯
PS。$ conn是正确的,并且在插入或打印帖子时有效。
夫妻问题是,设置了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数据发送到数据库之前对其进行验证。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句