UPDATE遇到问题

时间:2013-11-24 00:24:16

标签: php mysql

我试图建立一个报告系统并需要更新一些值但是每次我尝试做某事时似乎都会给我这个错误,我使用的是mysql和php:

  

解析错误:第22行的C:\ xampp \ htdocs \ core \ functions \ offtopic.php中的语法错误,意外的''(T_ENCAPSED_AND_WHITESPACE),期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)< / p>

以下是代码:

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());
}

2 个答案:

答案 0 :(得分:3)

你试过这个:

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

大括号可能会成功。

或者,你可以像这样连接字符串:

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

这也允许你潜入int cast,这是一种肮脏但有效的方法,使这个脚本更好地防止SQL注入。更好的方法是完全删除已弃用的mysql函数,切换到mysqliPDO,并使用预准备语句。

答案 1 :(得分: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";