1

我的网站上有一个评论系统,用户可以在其中评价其他用户。当用户登录时,他们可以转到待处理的评论部分,在那里他们可以批准或删除评论。

我从 ptb_reviews 表中提取评论并在页面 review.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>

             <? }  ?>

接下来是我执行approve_review.php 的SQL 函数的代码:

<?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,所以如果有人可以告诉我或解释该做什么,那就太好了。

4

1 回答 1

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']; 
于 2012-12-28T19:49:01.737 回答