MySql + InnoDB + PHP单引号歧视?

时间:2011-03-01 20:56:58

标签: php mysql innodb

好的,我最近将一些表转换为InnoDB存储引擎,并且每当我在INSERT语句的列列表中使用单引号时我就会收到错误:

INSERT INTO 'Table' ('Col1', 'Col2') VALUES ('Val1', 'Val2')

当我厌倦了使用phpMyAdmin生成一个正确的语句时,它看起来几乎一样,所以我将它粘贴在我的应用程序中,并且它有效。然后我的下一个声明有同样的错误,所以我开始怀疑。经过一段时间的游戏,我发现问题是查询需要一个反向滴答而不是单引号,但不是整个事情。

INSERT INTO `Table` (`Col1`, `Col2`) VALUES ('Val1', 'Val2')

有效,所以它不像MySql不理解单引号。这里发生了什么?我也不能像以前那样使用MyISAM不加引号列(即:表(Col1,Col2))

2 个答案:

答案 0 :(得分:5)

这是因为单引号表示字符串文字,而反引号表示数据库/表/列标识符转义。

删除反引号会导致错误,因为TABLE是保留字,因此为了将其用作表名,您必须包含反引号。

答案 1 :(得分:1)

您在字符串值周围放置单引号,并在对象名称周围使用反引号。除非您的表/列的名称是保留字或其中包含空格/有趣字符,否则技术上不需要反引号。