<?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" на этой странице, но ничего не меняется в базе данных. Пожалуйста, помогите мне.
Хорошо, я закончил тесты без создания таблицы santax. Если он все еще не работает, то это связано с определением таблицы.
Если вы не хотите делать что-то еще с полученными исключениями, кроме отображения сообщения об ошибке пользователю, вы должны удалить блоки try-catch. Это позволит вам показывать удобное сообщение об ошибке/страницу в будущем с помощью определения ошибки и обработчика исключений. Пока PHP покажет вам сообщение об ошибке и умрет: именно то, что вам нужно во время разработки. Взгляните на этот раздел и в этот раздел руководства, чтобы узнать, как применять обработку ошибок и исключений и отчеты.
В инструкции update вы используете маркер :eventID
дважды, но один раз присваиваете значение $eventID
. Чтобы это сделать, вам необходимо активировать эмуляцию, как часть параметров подключения. Если вы этого не сделаете, вы получаете исключение
SQLSTATE[HY093]: Invalid parameter number
Итак, поместите это в массив параметров соединения:
PDO::ATTR_EMULATE_PREPARES => TRUE
Удачи.
action=updated
? у вас нет доступа к данным GET в вашем коде ... Разместите HTML-код вашей формы