2013-11-24 6 views
2

Я пытаюсь сделать систему отчетов и нужно обновить некоторые значения, но это, кажется, дает мне эту ошибку каждый раз, когда я пытаюсь сделать что-то, я использую MySQL и PHP:Возникли проблемы с UPDATE

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, переключиться на mysqli или PDO и использовать подготовленные операторы.

+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"; 
Смежные вопросы