MySql+;InnoDB+;PHP单引号歧视?

MySql+;InnoDB+;PHP单引号歧视?,php,mysql,innodb,Php,Mysql,Innodb,好的,我最近将许多表转换为InnoDB存储引擎,每当我在INSERT语句的列列表中使用单引号时,就会出现错误: INSERT INTO 'Table' ('Col1', 'Col2') VALUES ('Val1', 'Val2') 当我厌倦了使用phpMyAdmin来生成正确的语句时,它看起来几乎是一样的,所以我将它粘贴到我的应用程序中,它成功了。然后我的下一个陈述也有同样的错误,所以我开始怀疑。经过一番尝试后,我发现问题在于查询需要一个倒勾,而不是单引号,但不是整个查询 INSERT IN

好的,我最近将许多表转换为InnoDB存储引擎,每当我在INSERT语句的列列表中使用单引号时,就会出现错误:

INSERT INTO 'Table' ('Col1', 'Col2') VALUES ('Val1', 'Val2')
当我厌倦了使用phpMyAdmin来生成正确的语句时,它看起来几乎是一样的,所以我将它粘贴到我的应用程序中,它成功了。然后我的下一个陈述也有同样的错误,所以我开始怀疑。经过一番尝试后,我发现问题在于查询需要一个倒勾,而不是单引号,但不是整个查询

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

很有效,所以MySql并不是不理解单引号。这是怎么回事?我也不能像以前一样用MyISAM(即:Table(Col1,Col2))

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


删除反勾号会导致错误,因为
TABLE
是保留字,所以要将其用作表名,必须包含反勾号。

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


删除反勾号会导致错误,因为
TABLE
是一个保留字,所以要将其用作表名,必须包含反勾号。

在字符串值周围加上单引号,在对象名周围加上反勾号。但是,从技术上讲,倒勾符号是不必要的,除非表/列的名称是保留字或包含空格/有趣的字符。

在字符串值周围加上单引号,并在对象名称周围使用倒勾符号。但是,从技术上讲,倒勾符号是不必要的,除非表/列的名称是保留字或其中包含空格/有趣的字符。

正是如此。这个例子说明了为什么你应该一直使用它们。比如说,一段时间后,他们会因为一些不虔诚的原因把你的tablename变成一个关键字,然后你就知道了,为了这个例子,tablename只是“table”,但我明白你的意思。谢谢确切地这个例子说明了为什么你应该一直使用它们。比如说,一段时间后,他们会因为一些不虔诚的原因把你的tablename变成一个关键字,然后你就知道了,为了这个例子,tablename只是“table”,但我明白你的意思。谢谢我需要强调backtick和单引号之间的区别,我认为:P-认为在某些情况下backtics用于系统命令。因此,在php中(u正在使用)单引号表示常量文本,双引号允许解析,backtics是sys命令。我需要更多地强调backtick和单引号之间的区别。我认为:P-在某些情况下,backtics用于系统命令。所以在php(u正在使用)中,单引号用于常量文本,双引号用于解析,反引号用于sys命令