2013-04-08 39 views
0

我根本无法理解这一点。关键字'更新时的MYSQL语法错误

我在写一个简单的PHP脚本来更新特定的数据库字段。

此查询工作正常,没有任何问题可言,但是setting_id容易改变似乎并因此不适合/便携式

mysql_query("UPDATE oc_setting SET value='" . $css . "'" . 'WHERE setting_id=13576', $con) or die(mysql_error()); 

此查询,似乎并没有在任何情况下工作,这是我需要的查询。

mysql_query("UPDATE oc_setting SET value='" . $css . "'" . 'WHERE key="sellya_custom_css"', $con) or die(mysql_error()); 

它让我这个错误: 您的SQL语法错误;检查对应于您的MySQL服务器版本的手册,以便在第1行的'key =“sellya_custom_css”'附近使用正确的语法。

现在我有一种预感,它可能有一些关键字或许是保留关键字,所以我试着把它用引号括起来,而脚本没有出现任何错误,但它也没有更新字段。

我已经试过无数的组合与单引号双引号,各种串联组合无济于事。

难道有人请帮助我吗?

谢谢。

+2

'key'是保留字,应该有回蜱如果你仍然想为什么我收到了一个向下票使用它 – 2013-04-08 04:31:25

+1

:S? – Melbourne2991 2013-04-08 04:49:41

+0

这个问题没有错。 – 2013-04-08 05:19:16

回答

5

KEY是MySQL中的保留字

最好把KEY内``反勾。

源(link

+0

完美谢谢!我认为可能是这样,但我不知道我必须使用特殊引号('')来包装它。 – Melbourne2991 2013-04-08 04:32:26

+0

@ user1650757是的,它是非常好的练习它..:D – 2013-04-08 04:33:10

+1

你应该引用分区键,而不是mysql中的保留关键字列表。 [MySQL保留关键字列表](http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html) – 2013-04-08 04:35:04

2

Please, don't use mysql_* functions in new code. They are no longer maintained and are officially deprecated . See the red box? Learn about prepared statements instead, and use or .

现在,这个问题:

"UPDATE oc_setting SET value='" . $css . "'" . 'WHERE key="sellya_custom_css"' 
在此查询字符串

,你WHERE之前缺少空间。将其更改为:

"UPDATE oc_setting SET value='" . $css . "'" . ' WHERE `key`="sellya_custom_css"' 

key需要在查询中逃脱了。

+0

好吧,请花点时间看看进入pdo和mysqli,添加空间后,我仍然收到相同的错误。 – Melbourne2991 2013-04-08 04:30:32

相关问题