2016-05-08 77 views
0

我在更新我的數據庫的posts表時遇到問題,當用戶更新他們所做的博文時。更新聲明mySQL問題

事件流 - 用戶發佈博文,將其保存到數據庫,然後他們可以返回並編輯它。編輯會調出一張填充了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