2013-11-24 55 views
2

我试图使报告制度,需要更新一些值,但似乎每次我试图做一些事情的时候给我这个错误,我使用MySQL和PHP:与更新有麻烦

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\core\functions\offtopic.php on line 22

下面是代码:

if (isset($_GET['report'])) 
{ 
    $query = "UPDATE `offtopicposts` SET `reported`='1', `reported_by`=$_SESSION['user_id'] WHERE `post_id` = $_GET['report']"; 
    mysql_query($query) or die(mysql_error()); 
} 
+0

是'$ _SESSION [ 'user_ID的']'设置?你很容易[SQL注入](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)! – kero

+0

我正在检查是否设置了$ _GET ['report']并且页面会重定向它们,如果该会话var未设置 – Carefree4

+0

您确定这是第22行吗?听起来像你可能会错过在这条线上的任何先前的分号22 ... –

回答

3

你有没有尝试过这样的:

$query = "UPDATE `offtopicposts` SET `reported`='1', `reported_by`={$_SESSION['user_id']} WHERE `post_id` = {$_GET['report']}"; 

大括号可能做的伎俩。

或者,您可以Concat的像这样的字符串:

$query = "UPDATE `offtopicposts` SET `reported`='1', `reported_by`=" . 
     $_SESSION['user_id'] . " WHERE `post_id` = " . 
     (int)$_GET['report']; 

这也可以让你在INT投,这是一个肮脏的,但有效的方式,使这个脚本针对SQL注入更好的保护潜行。更好的办法是完全放弃已弃用的mysql函数,切换到mysqliPDO,并使用预准备语句。

+0

修复了它。谢谢您的帮助! – Carefree4

+1

无法接受另外5分钟......并且没有足够的声望来投票...: - / – Carefree4

0

你可以这样做;

$query = "UPDATE `offtopicposts` SET `reported`='1', `reported_by`=".$_SESSION['user_id']." WHERE `post_id` = ".$_GET['report']; 

或者这

$user_id = $_SESSION['user_id']; 
$report = $_GET['report']; 
$query = "UPDATE `offtopicposts` SET `reported`='1', `reported_by`=$user_id WHERE `post_id` = $report";