2016-05-08 75 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