PDO从表单数据更新

时间:2013-10-26 23:48:55

标签: php mysql pdo

我正在尝试使用PHP数据对象执行基本的CRUD。我有两个文件:edit_list.php,其中列出了我拥有的页面,当单击一个页面时,它会将用户发送到edit.php,其中包含所单击页面的ID。在我的edit.php文件中,我运行一个查询来填充表单,如下所示:

if(isset($_GET['id'])){
    $ID = $_GET['id'];
    global $conn;
    $query = ('SELECT * FROM pages WHERE page_id = :page_id');
    $stmt = $conn->prepare($query);
    $stmt->execute(array(':page_id' => $ID));
    $selectPage = $stmt->fetch();`

我的表单如下:

<form action="edit.php" method="post">              
    <input style="width:500px;" type="text" name="title" placeholder="Page Title" value="<?php echo $selectPage['page_title']; ?>"/>               
    <input style="width:500px;" type="text" name="message" placeholder="Message" value="<?php echo $selectPage['page_message']; ?>"/>               
    <textarea  rows="15" value="<?php echo $selectPage['page_content']; ?>" cols="60" placeholder="Content" name="content" style="margin-left: 0px; margin-right: 177px; width: 500px!important;"></textarea>
    <input type='hidden' name='id' value='<?php echo $selectPage['page_id']; ?>' />
    <input type='hidden' name='action' value='update' />
    <input type='submit' value='Edit' />                
</form>

我只是在运行$selectPage["page_title"];等...

我正在尝试运行此查询:

$action = isset( $_POST['action'] ) ? $_POST['action'] : "";
            if($action == "update"){ 
            try{    
            global $conn;
            $updatequery = 'UPDATE pages SET page_title = :page_title, page_message = :page_message, page_content = :page_content WHERE page_id= :page_id';
            $statement = $conn->prepare($updatequery);
            $statement->bindValue(':page_title', $_POST['page_title']);
            $statement->bindValue(':page_message', $_POST['page_message']);
            $statement->bindValue(':page_content', $_POST['page_content']);
            $statement->bindValue(':page_id', $_POST['page_id']);
            $statement->execute();
            header('Location:index.php');

            }catch(PDOException $exception){ 
            echo "Error: " . $exception->getMessage();
    }   
}

它将我重定向回index.php,就像它已执行但没有任何更新。我已经差点撞墙了,绝望已经接管了。

1 个答案:

答案 0 :(得分:1)

您有$_POST['page_message']但您的表单输入名为name="message",而不是匹配。

$_POST['page_title']input name="title"也不匹配。

您的方法为POST,但您与if(isset($_GET['id'])){

一起呼叫type='hidden' name='id'

这些因素会破坏您的代码。