2

有人可以帮忙吗,我正在尝试在单击链接时在我的表 'ptb_permissions' 中更新“privellages”列(我知道它的拼写错误)。

基本上我以前做过很多其他的事情,它工作得很好,只是由于某种原因这不起作用。

当用户发送查看其图片的请求时,用户会在收件箱中收到通知。并且用户将有两个链接,一个用于批准或一个用于删除请求。

如果他们单击批准,那么这应该将枚举列“特权”从 0 更新为 1。

这是行不通的。我没有得到任何错误我只是没有发生任何事情。请有人告诉我我哪里出错了谢谢。

<a href="includes/approve_priv_pix.php?pix=<?php echo $pix['user_id']; ?>">Yes this is ok</a>

approve_priv_pix.php 的内容;

<?php
require_once("session.php"); 
require_once("functions.php");
require('_config/connection.php');
approve_pix ($_GET['picture'], $_SESSION['user_id']);
header("Location: {$_SERVER['HTTP_REFERER']}");
?>

mysql功能:

function approve_pix($picture, $user) {
                        global $connection;
            global $_SESSION;
                        $query = "UPDATE ptb_permissions
                                    SET privellages='1'
                                    WHERE id=$picture 
                                    AND to_user_id=$user";
            mysql_query($query, $connection);
                }
4

2 回答 2

0

$_GET['picture']应该$_GET['pix']

还要仔细检查您的privellages列枚举值。

于 2013-02-12T18:16:37.027 回答
0
<a href="includes/approve_priv_pix.php?pix=<?php echo $pix['user_id']; ?>">Yes this is ok</a>

在这里你有pix一个键,但在approve_priv_pix.php 中你正在从$_GET['picture']. 假设它应该被替换为$_GET['pix'] Also,不知道为什么你有<?php echo $pix['user_id']; ?>链接代码。可能它应该是这样的<?php echo $pix['picture_id']; ?>

此外,您的代码对 sql 注入开放。这里:

$query = "UPDATE ptb_permissions
          SET privellages='1'
          WHERE id=$picture 
          AND to_user_id=$user";

而不是你应该更好地做:

$query = "UPDATE ptb_permissions
          SET privellages='1'
          WHERE id=" .mysql_real_escape_string($picture) . "
          AND to_user_id=" .mysql_real_escape_string($user);

有关 的更多详细信息mysql_real_escape_string。查看该页面顶部的警告消息。mysql 扩展已被弃用,将很快被删除。对于新项目,您最好使用 PDO 或 MySQLi 扩展。

另一个注意事项: global $_SESSION;根本不需要。默认情况下,它可以从 PHP 中的任何地方访问。

我没有收到任何错误我只是没有发生任何事情

要查看所有错误,您应该设置error_reporting为 E_ALL(在您的 ini 文件中或直接在代码中)。启用此选项后,您将看到所有通知/警告/错误。

于 2013-02-12T18:16:58.103 回答