在mysql DB中通过php更新数据

时间:2015-08-30 21:34:39

标签: php mysql sql pdo

我已经浏览了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是正确的,适用于内容或打印帖子。

3 个答案:

答案 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文件并以这种方式工作。感谢所有的努力。