这个sql语句有什么问题?

时间:2011-06-21 14:09:53

标签: php mysql sql

我觉得很蠢,但我找不到错误...... 谢谢。

$l_sSql = 'INSERT INTO ftb2010_winners ("first_name", "last_name", "email", "dob", "token", claimed_status) VALUES (\''.$l_aData['firstName'].'\',\''.$l_aData["lastName"].'\',\''.$l_aData["email"].'\',\''.$l_aData["year"].'-'.$l_aData["month"].'-'.$l_aData["day"].'\', "token", 0;';

运行时出现错误

  

#1064 - 您的SQL语法出错;检查手册   对应于您的MySQL服务器   用于正确语法的版本   靠近'“first_name”,“last_name”,   “电子邮件”,“dob”,“令牌”,   claim_status)VALUES('Phi'在线   1

编辑......好的,谢谢......得到它,是的,我知道这是我失踪的东西

6 个答案:

答案 0 :(得分:5)

您的值缺少一个右括号。

答案 1 :(得分:5)

最后没有右括号“)”。

答案 2 :(得分:5)

第一个错误:字段名称应该用反引号括起来,而不是引号。 (即使这样,只有当字段名称是保留的SQL字或包含特殊字符时才需要反引号。一般来说,使用反引号是一个好主意,但在你的例子中,你可以在没有它们的情况下逃脱)

第二个错误:在查询结束时缺少关闭。

可能的错误:确保您正在使用的所有变量都已正确转义。如果不这样做,将导致您的代码容易受到SQL注入攻击。 (如果没有看到更多代码,我无法判断这是否真的是一个问题)

样式问题:你在没有任何充分理由的情况下在单引号和双引号之间混合引号。即,您的某些值使用单引号,其他值使用双引号。始终如一。此外,所有那些逃脱的单引号使整个事情很难阅读!

答案 3 :(得分:4)

在MySQL中,字段和表名应该用反引号括起来,而不是用双引号括起来。

所以它应该是:

INSERT INTO ftb2010_winners (`first_name`, `last_name`, ...

答案 4 :(得分:3)

您不应将列名放在"

INSERT INTO ftb2010_winners (first_name, lastname, ....)

并且当然缺少)

答案 5 :(得分:2)

  • 你不应该逃避蜱虫 (')围绕您的数据。你应该在数据中逃避刻度/撇号
  • 字段名称应该用反引号(`)包围,而不是双引号(“)。
  • 您在声明末尾缺少一个结束括号。