Я пытаюсь выполнить базовый CRUD с объектами данных PHP. У меня есть два файла: edit_list.php, где я перечисляю страницы, которые у меня есть, и когда нажимается страница, он отправляет пользователю edit.php с идентификатором страницы, на которую была нажата кнопка. В моем файле edit.php я выполнить запрос, чтобы заполнить форму следующим образом:PDO update from form data
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, как это имеет ех но ничего не обновляется. Я довольно сильно ударил стену этим, и отчаяние заняло верх.
По умолчанию PDO отключается при ошибке. Вам нужно либо явно проверить результат ['$ statement-> execute()'] (http://www.php.net/manual/en/pdostatement.execute.php) для успеха, либо настроить PDO на выброс исключения с ['$ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);'] (http://php.net/manual/en/pdo.setattribute.php). – eggyal
Вы запустили '$ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' где-то, чтобы ваши вызовы на '$ conn' генерировали исключения вместо того, чтобы возвращать' false', когда что-то пошло не так? –
С одной стороны, вы POST: '$ _POST ['page_message']', но ваш ввод формы называется 'name = 'message" и '$ _POST [' page_title ']' input 'name =" title "' так что не будет мыть. –