我目前正在创建一个登录系统,其中一部分当然是注册。直到现在,一切都很顺利,我犯了一个错误。
我已经尽可能彻底地研究了这个问题,但我找不到解决方案,因为它给了我一个错误的行号。
我得到的错误是:
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 {
...
}