错误的行号导致MYSQL INSERT语法错误

时间:2015-04-03 01:14:55

标签: php mysql

我目前正致力于创建登录系统,其中一部分当然是注册。它一直顺利进行到此为止,我收到了错误。

我已经尽可能彻底地研究了这个问题,但我无法找到解决方案,因为它给了我一个不正确的行号。

我得到的错误是:

Error: 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查询是

$token = (round(microtime(true) * 1000));
$query = mysql_query("INSERT INTO "
            . "`users` "
            . "(name, password, email, token) "
            . "VALUES "
            . "('$_POST[user]'"
            . ",'".hash('sha512',$_POST['pass'])."'"
            . ",'$_POST[email]'"
            . ",'$token')") or die(mysql_error());
    if (mysql_query($query) === TRUE) {
        //echo "Sucsessfuly registered! Check your email for a confirmation link.";
    } else {
        echo "Error: " . mysql_error();
    }

(这是不是文件的第一行,它是22d) 当代码运行时,即使它抛出错误,它仍然正在将值插入表中。

此外,当我在phpmyadmin中运行相同的查询时,它运行正常,没有错误。

我一直试图在过去3小时内解决此错误,因此我们将不胜感激任何帮助;)

1 个答案:

答案 0 :(得分:1)

您正在调用mysql_query两次:首先使用SQL,然后您使用查询结果,就好像它是一个查询一样。您获得的错误是因为$querytrue,当被视为字符串时会变为1

您应该只将$query设置为SQL字符串:

$query = "INSERT INTO ...";
if (mysql_query($query)) {
    ...
} else {
    ...
}

或者您应该只检查$query

的值
$query = mysql_query(...);
if ($query) {
    ...
} else {
    ...
}