Я хочу обновить данные в моей базе данных, используя PDO, но в базе данных ничего не меняется [дубликаты]

0
<?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. Когда я нажимаю кнопку, она просто загружается в "view-event.php? Action = updated" на этой странице, но ничего не меняется в базе данных. Пожалуйста, помогите мне.

  • 0
    Почему action=updated ? у вас нет доступа к данным GET в вашем коде ... Разместите HTML-код вашей формы
  • 0
    Не так. Введите код формы в свой вопрос.
Показать ещё 15 комментариев
Теги:
database
pdo

1 ответ

2
Лучший ответ

Хорошо, я закончил тесты без создания таблицы santax. Если он все еще не работает, то это связано с определением таблицы.

Если вы не хотите делать что-то еще с полученными исключениями, кроме отображения сообщения об ошибке пользователю, вы должны удалить блоки try-catch. Это позволит вам показывать удобное сообщение об ошибке/страницу в будущем с помощью определения ошибки и обработчика исключений. Пока PHP покажет вам сообщение об ошибке и умрет: именно то, что вам нужно во время разработки. Взгляните на этот раздел и в этот раздел руководства, чтобы узнать, как применять обработку ошибок и исключений и отчеты.

В инструкции update вы используете маркер :eventID дважды, но один раз присваиваете значение $eventID. Чтобы это сделать, вам необходимо активировать эмуляцию, как часть параметров подключения. Если вы этого не сделаете, вы получаете исключение

SQLSTATE[HY093]: Invalid parameter number

Итак, поместите это в массив параметров соединения:

PDO::ATTR_EMULATE_PREPARES => TRUE

Удачи.

  • 0
    Спасибо @aendeerei, теперь это работает. простите, я не заметил, что вы спросили меня синтаксис.
  • 0
    @ArnabDasguptaADG Что, я тебя просил как минимум пять раз :-))))) Я шучу, Арнаб ;-) Добро пожаловать. Прочитайте учебник, это круто.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню