插入命令的mysql错误

时间:2012-05-18 18:37:26

标签: php mysql database insert

所以,我正在创建一个密码更改表

当有1个更改通过时,我在PassChange表中插入了他的用户名,newpass和确认码,(之后我发送了一封确认电子邮件)这个想法很简单,这里是我使用的代码

 $insertResult=mysql_query("INSERT INTO TempChangePass (UserName, NewPass, ConfirmationCode) VALUES ('$UserName', '$newPass', '$code')") or die (mysql_error());

虽然我收到此错误: 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行“用户名”,“4da59df8d4007807e7230e0881fbf774”,“16585482”)附近使用正确的语法

注意:表中的所有列格式都设置为varchar。

与mysql数据库的连接很好,表名是current。

这个问题让我发疯,我只是想不通问题在哪里,如果有人在这里可以帮助我会非常感激:)

并提前致谢。

编辑: 我实际上已经解决了,只是对于通过搜索解决方案访问此帖子的人,如果你的sql命令遇到类似问题,请尝试回显它,看看字符串是如何移动到数据库的:-),happy coding每个人。

抱歉,如果我浪费你的任何时间:)我只是非常新的php& mysql:D

6 个答案:

答案 0 :(得分:1)

删除变量周围的单引号。 PHP将它们解释为字符串。

 $insertResult=mysql_query("INSERT INTO TempChangePass (UserName, NewPass, ConfirmationCode) VALUES ('" . $UserName. "', '" . $newPass. "', '" . $code . "')") or die (mysql_error());

此外,您可能希望执行以下操作:

$sql = "INSERT INTO TempChangePass (UserName, NewPass, ConfirmationCode) VALUES ('" . $UserName. "', '" . $newPass. "', '" . $code . "')";

echo $sql;

接受回音,并尝试手动运行它。

答案 1 :(得分:1)

看起来您的实际用户名中有单引号 - 实际上是在传递'username'而不仅仅是username。尝试删除它们,看看它是否会在那之后起作用。

处理此问题(并防止SQL注入)的推荐方法是使用prepared statements,但是如果您真的想这样做,则可以使用mysql_real_escape_string($UserName)内联执行此操作({{3} })

答案 2 :(得分:1)

看起来像sql inyection。我很确定你的$ username是$ username =“username'”。看看单引号。所以查询变为:

$ insertResult = mysql_query(“INSERT INTO TempChangePass(UserName,NewPass,ConfirmationCode)VALUES('username * '' *,'4da59df8d4007807e7230e0881fbf774','16585482')”)或死(mysql_error( ));

答案 3 :(得分:1)

您是否尝试逐列进行查询?

我的意思是:

INSERT INTO TempChangePass (UserName) values ( '$UserName' ); 

然后加起来?

在我出错时主要适用于我;)

只是一个想法。

答案 4 :(得分:1)

在进行查询之前尝试使用清理脚本。

使用

mysql_real_escape_string()

修改

您现在应该使用MySQLi版本

mysqli_real_escape_string()

或OOP方法

mysqli::real_escape_string()

Why use MySQLi instead of MySQL?

答案 5 :(得分:1)

试试这个:

$insertResult=mysql_query("INSERT INTO TempChangePass(UserName, NewPass, ConfirmationCode) VALUES('$UserName', '$newPass', '$code')") or die (mysql_error());

SQL中有一些额外的空格。