Php 从';0';至';1';?

Php 从';0';至';1';?,php,mysql,Php,Mysql,我正在运行一个mysql查询,以获取我网站上所有等待用户批准或删除的用户评论 我有一个基本的文件结构: 它提取mysql结果和函数文件approve_review.php 新的评论在mysql查询中表现良好,但当我尝试批准或删除评论时,什么都没有发生,我没有收到任何错误或任何东西 单击“批准”时,假定会将表ptb_reviews.approved从“0”更新为“1”,如果单击“删除”,则会将审查从“0”更新为“1” (我仅为此目的加入了批准代码,因为它们实际上是相同的,且批准设置为删除) 我正在

我正在运行一个mysql查询,以获取我网站上所有等待用户批准或删除的用户评论

我有一个基本的文件结构:

它提取mysql结果和函数文件approve_review.php

新的评论在mysql查询中表现良好,但当我尝试批准或删除评论时,什么都没有发生,我没有收到任何错误或任何东西

单击“批准”时,假定会将表ptb_reviews.approved从“0”更新为“1”,如果单击“删除”,则会将审查从“0”更新为“1”

(我仅为此目的加入了批准代码,因为它们实际上是相同的,且批准设置为删除)

我正在使用review_id,以便它知道要批准或删除的审查以及会话,以便只有用户可以批准或删除这些审查

有人能看一看,看看他们是否能找到一种方法让它发挥作用吗

Reviews.php:

<?php
            $pending_set = get_pending_reviews();
            while ($reviews = mysql_fetch_array($pending_set)) {


    ?>

            <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>

                 <? }  ?>

我没有发现任何错误

这可能是因为您没有检查错误

每次调用数据库API函数时,都需要检查返回值。如果有任何错误,大多数函数都会返回
false
,然后需要调用另一个函数来检查错误类型、错误消息等

例如:

$result = mysql_query($query, $connection);
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

您也可以直接内联显示错误:

mysql_query($query, $connection) or die(mysql_error());

这应该会揭示任何问题。

我注意到您的“批准\审查”功能需要两个参数。但对第二个参数没有做任何处理

反正

首先,为了安全起见:

$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..
}
你可能想看看

您的查询应如下所示:

$query = "UPDATE ptb_reviews SET approved = 1 WHERE id = '$review_id' LIMIT 1";
// Using a LIMIT 1 is also a good practice. It limits the updates to 1 only in case of a hack.
要调试查询,您应该只回显查询,看看它是否是正确的SQL格式

echo $query;
die();
// See what is really sent to MySQL
您还应使用:

if (!mysql_query($query, $connection)){
    die(mysql_error());
}

要查看查询是否成功执行以及是否存在任何错误(为什么不将其设置为Review=1)

代码中存在SQL注入漏洞。(考虑一下如果我编辑
appprove\u review.php
查询字符串说
review\u id=id
或者甚至
review\u id=1;DROP+TABLE+ptb\u reviews
)会发生什么情况)为什么您有
if (!mysql_query($query, $connection)){
    die(mysql_error());
}