2016-05-08 8 views
0

ユーザーが自分のブログ投稿を更新すると、データベースのpostsテーブルを更新する際に問題が発生します。更新ステートメントmySQLの問題

イベントの流れ - ユーザーがブログ投稿を作成し、DBに保存して戻って編集できます。編集は、postsテーブルのデータが入力されたあらかじめ埋め込まれたHTMLフォームを表示します。その後、ユーザーはタイトルと内容を変更することができ、更新を押すと、フォームの投稿された値は元の投稿のタイトルと内容に置き換えられます。posts DB他のすべての列は変更されません。

現在、私のデータベースは更新されていないようですが、その理由はわかりません。 html/php/sql/pdosの組み合わせを使用してSQL文を実行すると、私の初心者の経験と助けに非常に複雑になります。 コード(UPDATE文は一番下にあり、ほとんどの問題):

// begin edit post 
    if(isset($_GET['editPost'])) { 
      $editPostId = $_GET['editPost']; 
      $sqlEditPostCheck = <<<EOD 
      SELECT author, id FROM posts WHERE author = '$currentUserId' 
EOD; 
      $stmtEditPostCheck = $pdo->prepare($sqlEditPostCheck); 
      $stmtEditPostCheck->execute(); 

      $ableToEdit = false; 

      while ($row = $stmtEditPostCheck->fetch(PDO::FETCH_ASSOC)) { 
       if($editPostId === $row['id'] && $currentUserId === $row['author']) { $ableToEdit = true; } 
      } 

      if($ableToEdit === true) { 
       $editPost_Title = ""; 
       $editPost_Content = ""; 

       $sqlEditPostPreFills = <<<EOD 
      SELECT id, post_title, content FROM posts WHERE id="$editPostId" 
EOD; 
       $stmtEditPost = $pdo->prepare($sqlEditPostPreFills); 
       $stmtEditPost->execute(); 
       while ($row = $stmtEditPost->fetch(PDO::FETCH_ASSOC)) { 
        $editPost_Title = $row['post_title']; 
        $editPost_Content = $row['content']; 
        $editPostId = $row['id']; 
       }  

       $content = <<<EOD 
       <form action="?profile&editPost="$editPostId" method="post"> 
      <h1>Edit Post</h1> 
      <div class="form-group"> 
       <input name="Epost_title" type="text" id="Epost_title" value="$editPost_Title" class="form-control"> 
      </div> 
         <div class="form-group"> 
       <textarea class="form-control" name="Epost_content" id="Epost_content" value="" rows="6">$editPost_Content</textarea> 
      </div> 
      <div style="text-align: right;"> 
       <button type="submit" name="update" style="width: 30%;" class="btn btn-success btn-lg">Update</button> 
      </div> 
       </form> 
      <hr /> 
EOD; 

     } // end IF ableToEdit 
     $updatedContent = ""; 
      if(isset($_POST['Epost_content'])) { $updatedContent = $_POST['Epost_content']; } 

    $updatedTitle = ""; 
      if(isset($_POST['Epost_title'])) { $updatedTitle = $_POST['Epost_title']; } 

    if(isset($_POST['Epost_content']) && isset($_POST['Epost_title'])) { 
    $sqlUpdatePost = <<<EOD 
    UPDATE posts SET post_title='$updatedTitle', content='$updatedContent' WHERE posts.id='$editPostId' AND posts.author='$currentUserId'; 
EOD; 
      $stmtUpdate = $pdo->prepare($sqlUpdatePost); 
      $stmtUpdate->execute(); 
       } 
    } 
    // end edit post 

答えて

-1

この行は私のために悪く見える

<form action="?profile&editPost="$editPostId" method="post"> 

が、これはまだ更新されません

<form action="?profile&editPost=\"$editPostId\" method=\"post\">" 
+0

にそれを変更しようデータベース。正直なところ、私のフォームのアクションを何にしたいのか、またフォームのアクションがアップデートを捨ててしまうのかどうかわからない...確かにありがとう! – ryan