我目前正在创建一个登录系统,其中一部分当然是注册。到目前为止一切顺利,但我遇到了错误。
我已经尽可能彻底地研究了这个问题,但我找不到解决方案,因为它给我的行号不正确。
我得到的错误是:
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 小时我一直在尝试解决此错误,因此我们将不胜感激 ;)
最佳答案
您调用了 mysql_query
两次:第一次是使用 SQL,然后您使用查询结果,就好像它是一个查询一样。您得到的错误是因为 $query
是 true
,当被视为字符串时它会变成 1
。
或者您应该将 $query
设置为 SQL 字符串:
$query = "INSERT INTO ...";
if (mysql_query($query)) {
...
} else {
...
}
或者你应该检查 $query
的值:
$query = mysql_query(...);
if ($query) {
...
} else {
...
}
关于php - MYSQL INSERT 语法错误,行号不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424910/