我想使用PDO将数据更新到我的数据库,但数据库中没有任何变化

时间:2018-03-04 19:42:18

标签: php mysql database pdo

<?php
    if(isset($_POST['submit'])){
        $_POST = array_map( 'stripslashes', $_POST );
        extract($_POST);
        if($eventName ==''){
        $error[] = 'Please enter the Event Name.';
    }
        if(!isset($error)){
            try {
                $stmt = $db->prepare('UPDATE event SET eventID = :eventID, eventName = :eventName, eventTime = :eventTime, eventLocation = :eventLocation, postDate = :postDate WHERE eventID = :eventID') ;
                $stmt->execute(array(
                ':eventID' => $eventID,
                    ':eventName' => $eventName,
            ':eventTime' => $eventTime,
            ':eventLocation' => $eventLocation,
            ':postDate' => date('Y-m-d H:i:s')
                ));
                //redirect to index page
                header('Location: view-event.php?action=updated');
                exit;
            } catch(PDOException $e) {
                echo $e->getMessage();
            }
        }
    }
    ?>

<?php
        //check for any errors
        if(isset($error)){
            foreach($error as $error){
                echo $error.'<br />';
            }
        }
            try {
                $stmt = $db->prepare('SELECT eventID,eventName, eventTime, eventLocation, postDate FROM event WHERE eventID = :eventID') ;
                $stmt->execute(array(':eventID' => $_GET['eventID']));
                $row = $stmt->fetch(); 
            } catch(PDOException $e) {
                echo $e->getMessage();
            }
        ?>

HTML表单

<form role="form" method="post" action=''>
<input type="hidden" class="form-control" placeholder="Enter Event Name" name="eventID" value='<?php echo $row['eventID'];?>'>
<input class="form-control" placeholder="Enter Event Name" name="eventName" value='<?php echo $row['eventName'];?>'>
<input class="form-control" placeholder="Enter Event Time" name="eventTime" value='<?php echo $row['eventTime'];?>'>
<input class="form-control" placeholder="Enter Event Location" name="eventLocation" value='<?php echo $row['eventLocation'];?>'>
<input type="submit" class="btn btn-primary" name="submit" value="Edit Event">
</form> 

您好, 这是代码。我想将数据更新到mysql数据库。当我点击按钮时,它只是加载到&#34; view-event.php?action = updated&#34;此页面但数据库中没有任何变化。请帮我。

1 个答案:

答案 0 :(得分:2)

好的,我在没有create table santax的情况下完成了测试。如果它仍然不起作用,那么它与表定义有关。

除非您想对捕获的异常执行其他操作,否则除了向用户显示错误消息之外,您应该删除 try-catch 块。通过定义errorexception handler,您可以在将来显示用户友好的错误消息/页面。虽然在此期间PHP只会向您显示错误消息并且死亡:正是您在开发过程中所需要的。请查看thisthis教程章节,了解如何应用错误以及异常处理和报告。

在更新语句中,您使用了:eventID标记两次,但只分配了$eventID一次的值。为了能够执行此操作,您需要激活仿真,作为连接选项的一部分。如果你不这样做,你就会收到例外

SQLSTATE[HY093]: Invalid parameter number

所以,把它放在你的连接选项数组中:

PDO::ATTR_EMULATE_PREPARES => TRUE
祝你好运。