2012-12-28 19 views
1

我在我的网站上有一个评论系统,用户可以评价其他用户。当用户登录时,他们可以进入他们的待审核部分,他们可以批准或删除评论。获取文章以通过id在mysql表中更新?

我通过表ptb_reviews的评论,并列在页面reviews.php上。然后,每个审阅都会批准或删除链接,该链接转到approve_review.php或delete_review.php,并且存在SQL函数,用于在我的表中设置相关列,以便批准或删除,从0到1.

因此,如果用户批准审核,则更新会在表格中批准1,其中该特定审核已被选择为批准,然后其相同以供删除。

我遇到了一个问题,当我尝试批准或删除评论时,我会回显查询来测试它以查看发生了什么,并查看它是否正在做我要求的操作以及我得到这样的:

UPDATE ptb_reviews SET approved = 1 WHERE id = '' LIMIT 1 

这意味着它不能找到审查ID,它不会因此更新适用于1表酌情这项审查。

,这里是我的reviews.php代码在审查通过拉:

<?php 
     $reviews_set = get_new_reviews(); 
     while ($reviews = mysql_fetch_array($reviews_set)) { 

      $review_id = (int) $_GET['review_id']; 
    // Just this, is a great security enhancement. Forces the variable to be int (like all id's are). 
    // You can also check if its a numeric by doing 
if (is_numeric($review_id)){ 
    // continue with the update query 
} else { 
    // something fishy is going on.. 
} 


?> 


     <div class="prof-content-pend-reviews" id="reviews"> 
      <div class="pend-review-content"> 
      <?php echo "{$reviews['content']}"; ?> 
      </div> 
      <div class="message_pic"> 
      <?php echo "<a href=\"profile.php?id={$reviews['from_user_id']}\"><img width=\"50px\" height=\"50px\" src=\"data/photos/{$reviews['from_user_id']}/_default.jpg\" /></a>";?> 

      </div> 

      <div class="forum-text"> 
      <?php echo "Posted by {$reviews['display_name']}"; ?> <?php echo "".$age." days ago"; ?> 
      </div> 

      <a href="includes/approve_review.php?review=<?php echo $reviews['review_id']; ?>"><div class="approve"></div></a> 
      <a href="includes/delete_review.php"><div class="delete"></div></a> 


      </div> 

      <? } ?> 

而且接下来是我的代码携带的了SQL功能approve_review.php:

<?php 
require_once("session.php"); 
require_once("functions.php"); 
require('_config/connection.php'); 

         $query = "UPDATE ptb_reviews SET approved = 1 WHERE id = '$review_id' LIMIT 1"; 
      mysql_query($query, $connection); 



echo $query; 
die(); 
// See what is really sent to MySQL 
if (!mysql_query($query, $connection)){ 
    die(mysql_error()); 
} 
?> 

我米基本上问是没有更新的原因,因为它无法找到正在被批准或删除的评论的ID,我该怎么做才能更新它,以便它知道我要求它批准的评论或删除?

我还在学习PHP和MySQL,所以如果有人能告诉我或解释该做什么,那会很棒。

+0

尝试调试$ _GET –

+0

我看不出其中$ REVIEW_ID定义或包含在“代码那么就可以执行批处理查询.php的sql函数“,除非你已经通过了它,否则它将是空的。同样,您在$ review_id周围的查询中的单引号可能会掩盖PHP变量 – sdjuan

回答

1

你所得到的查询变量是这样的:

$review_id = (int) $_GET['review_id']; 

但在你的链接使用:

<a href="includes/approve_review.php?review=<?php echo $reviews['review_id']; ?>"> 
            ^^^^^^ 

所以,您的评论ID存储在$_GET['review'],而不是$_GET['review_id']

首先你应该改变该行(或其他方式...):

$review_id = (int) $_GET['review']; 
+0

看起来不像'approve_reviews.php'正在从$ _GET ['review']'中检索。只有'reviews.php'确实... –

+0

@Michael Berkowski我认为// //继续更新查询行是下面的php的地方...... – jeroen

+0

那么我该怎么做才能让我们审批。 PHP从$ _GET ['review']检索? –

相关问题