我的网站上有一个评论系统,用户可以对其他用户进行评分。当用户登录时,他们可以转到待审批部分,在那里他们可以批准或删除评论。
我从表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。
这是我的review.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,所以如果有人能告诉我或解释做什么那就太棒了。
答案 0 :(得分: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'];