2013-10-26 4 views
2

Я пытаюсь выполнить базовый 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, как это имеет ех но ничего не обновляется. Я довольно сильно ударил стену этим, и отчаяние заняло верх.

+1

По умолчанию 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

+0

Вы запустили '$ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);' где-то, чтобы ваши вызовы на '$ conn' генерировали исключения вместо того, чтобы возвращать' false', когда что-то пошло не так? –

+1

С одной стороны, вы POST: '$ _POST ['page_message']', но ваш ввод формы называется 'name = 'message" и '$ _POST [' page_title ']' input 'name =" title "' так что не будет мыть. –

ответ

1

У вас есть $_POST['page_message'], но ваш ввод формы называется name="message", а не совпадением.

Также $_POST['page_title'] и input name="title" не совпадают.

Ваш метод POST пока вы вызываете if(isset($_GET['id'])){ в сочетании с type='hidden' name='id'

Те факторы, которые будут срывать ваш код.

+0

Вы поняли, что этот код работает? Думаю, мне нужно сделать то же самое с моим кодом. Http: //stackoverflow.com/questions/26789494/trying-update-record-with-pdo? Noredirect = 1 # comment42160540_26789494 – Donny

+0

@ Донни Посмотрите на вопрос/код OP здесь, основывайте себя на этом.Начните с одной или двух привязок, как только вы их заработаете, а затем добавьте, когда идете. –

+0

У меня проблема с моим действием. Я думаю, что это неправильно. Вы можете взглянуть на это, это было разочаровывающим, и это последняя страница, которая мне нужна, помимо функции электронной почты. он продолжает бросать мне ошибку синтаксиса ошибки неожиданно $ action http://stackoverflow.com/questions/26789494/trying-update-record-with-pdo?noredirect1_comment42160540_26789494 – Donny