MySQL语法错误 - 接近' 1'在第1行

时间:2012-04-27 22:33:12

标签: php mysql syntax-error

运行我的PHP脚本时它一直给我错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

这是我的sql代码,除了从表中选择之外。我已经注释掉所有这些并没有出现错误,所以我假设它出现在这段代码中。

    if($status === 1){
        $sqlQ = mysql_query("UPDATE tablename SET status=1 WHERE steam64='$id'");

        if(!mysql_query($sqlQ, $con)){
            die('Error: ' . mysql_error());
        }
    }else if($status !== 1){
        $sqlQ = mysql_query("UPDATE tablename SET status=2 WHERE steam64='$id'");

        if(!mysql_query($sqlQ, $con)){
            die('Error: ' . mysql_error());
        }
    }

让我感到困惑的是第1行。

5 个答案:

答案 0 :(得分:3)

你正在违反DRY原则。为什么不喜欢......

$statusValue = ($status === 1) ? 1 : 2;
$sqlQuery = mysql_query("UPDATE `14d2_group` SET `status` = $statusValue WHERE `steam64` = '$id'"):

更新2:看起来需要进一步澄清。

mysql_query函数不仅创建一个查询:它实际上发送到MySQL - 并返回结果。在UPDATE的情况下,如果查询失败,它将返回FALSE。这就是为什么你不应该像原始例子中那样调用mysql_query两次。

您可以使用mysql_affected_rows函数检查实际更新了多少行。

更新3:终于明白了。 )这就是出现错误的原因:您尝试使用上次更新查询的结果调用mysql_query。当TRUE转换为String时,只有'1'。 )

答案 1 :(得分:2)

您将一个查询的结果用作查询本身。

您可能想要做的是:

if($status === 1){
    $sqlQ = mysql_query("UPDATE tablename SET status=1 WHERE steam64='$id'");

    if (!$sqlQ) {
        die('Error: ' . mysql_error());
    }
}
else {// no need for your if-statement here because it would always be true
    $sqlQ = mysql_query("UPDATE tablename SET status=2 WHERE steam64='$id'");

    if(!$sqlQ){
        die('Error: ' . mysql_error());
    }
}

答案 2 :(得分:1)

“第1行”对应于查询的第1行,而不是调用它的脚本。要添加调用它的脚本行,请使用:

die('Error: ' . mysql_error() . ' in ' . $_SERVER['PHP_SELF'] . ' on line ' . __LINE__ );

至于查询,我真的没有看到任何东西向我跳来跳去。我现在唯一的建议是始终将字段名称括在反引号中,以防万一它们是关键字(这也使它们更清晰易读)

此外,您的else if也是多余的。如果$status === 1未运行,则$status !== 1 必须为真。

答案 3 :(得分:0)

由于类型转换,status=1不是问题。我假设$id有一些问题。将$id更改为其他安全值(1,'foo'...)后,请检查其是否有效。

答案 4 :(得分:-1)

'第1行'部分是SQL,说它收到的消息在第1行有错误 - 这是SQL试图处理的命令的第一行。

如果我不得不猜测,状态未设置为数字类型,因此您需要在其周围加上引号,以便SQL知道它正在传递变量。

编辑:好的,其他解决方案也可能是正确的。我们都对您的数据结构做出了不同的假设,我认为他更好。先试试吧。