0

为了避免撕掉我的头发,我想我只是在这里提出这个问题,因为我对 PHP Mysql 更新感到很恼火:我经常使用的东西,我认为我理解了!

基本上,是否有任何已知会破坏 MySQL 更新功能的表头名称?我有一个运行良好的更新 mysql_query 函数,例如:

UPDATE table_name SET
part_number='000 - New Product',
product_code='1',
barcode_ref='1',
type='new type'
WHERE id='999'

但是,如果我在代码中包含名为“触发器”的表头,它会破坏它!

UPDATE table_name SET
part_number='000 - New Product',
trigger='YES',
product_code='1',
barcode_ref='1',
type='new type'
WHERE id='999'

上面的sql返回错误:**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 'trigger='YES', part_number='000 - New Product', product_code='1', barcod' at line 1**

我对名为“trigger”的列进行了相同的复制,并将其重新命名为“testing_t”,并且立即一切都像以前一样完美。我已经尝试将我的 mysql_real_escape_string 转储到变量以在 UPDATE 命令中使用并内联执行它们,甚至尝试对字符串进行硬编码,但它仍然会中断。

任何人都可以对此有所了解吗?理想情况下,我真的不想更改我的表头名称,因为我不想在整个站点上修改对它的引用。显然,如果没有其他选择,那么我会的,但我希望我只是愚蠢,并且有人可以解释它为什么会发生/如何阻止它发生!

提前致谢,

4

3 回答 3

3

使用这个查询

UPDATE table_name SET
`part_number`='000 - New Product',
`trigger`='YES',
`product_code`='1',
`barcode_ref`='1',
`type`='new type'
WHERE id='999'

您的查询将失败,因为您没有trigger``

trigger是 mysql 中用于创建触发器的保留字。

要将保留字用作列名,您必须在里面写下该字``

于 2013-02-05T11:10:47.040 回答
2

trigger是一个 mySQL 关键字。如果您将所有列名括在 `` 中,您将是安全的。最好不要将这些关键字用作列名。

其他关键字在这里http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

于 2013-02-05T11:14:15.323 回答
1

mySQL 有一系列保留字,TRIGGER 就是其中之一。请参阅此单词列表作为指南,以了解不应调用列/表的内容:

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

于 2013-02-05T11:13:16.843 回答