我目前正致力于创建登录系统,其中一部分当然是注册。它一直顺利进行到此为止,我收到了错误。
我已经尽可能彻底地研究了这个问题,但我无法找到解决方案,因为它给了我一个不正确的行号。
我得到的错误是:
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小时内解决此错误,因此我们将不胜感激任何帮助;)
答案 0 :(得分:1)
您正在调用mysql_query
两次:首先使用SQL,然后您使用查询结果,就好像它是一个查询一样。您获得的错误是因为$query
是true
,当被视为字符串时会变为1
。
您应该只将$query
设置为SQL字符串:
$query = "INSERT INTO ...";
if (mysql_query($query)) {
...
} else {
...
}
或者您应该只检查$query
:
$query = mysql_query(...);
if ($query) {
...
} else {
...
}