链接点击时将枚举值设置为1?

时间:2013-02-12 18:10:03

标签: php mysql

有人可以请求帮助,我试图在单击链接时在我的表'ptb_permissions'中更新“privellages”列(我知道拼错了)。

基本上我之前已经做了很多其他的事情并且工作正常它只是因为某些原因不起作用。

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

如果他们点击批准,那么这应该将enum colum'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);
                }

2 个答案:

答案 0 :(得分:0)

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

同时仔细检查privellages列枚举值。

答案 1 :(得分: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']获取图片ID。假设它应该替换为$_GET['pix'] 另外,不确定为什么链接代码中有<?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文件中或直接在代码中)。启用此选项后,您将看到所有通知/警告/错误。