【发布时间】:2016-05-08 23:14:41
【问题描述】:
我正在尝试使用 node-mysql 更新包含节点中一个点的列名。我喜欢你如何通过只给它一个带有键的对象来轻松更新多个列,但是 node-mysql 对字符串的转义在这里失败了。
这是我的代码:
socket.on('settings',function(data){
console.log(data);
database.query('UPDATE Settings SET ? WHERE ?',[data,{name:socket.name}],function(err,rows){
if(err) console.log(err);
});
});
当这个事件以 data = {'a.b':'hello'} 触发时,它给了我以下错误:
{ [Error: ER_PARSE_ERROR: 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
''`a`.`b` = 'hello'' WHERE `name` = 'somename'' at line 1]
我知道不在列名中使用点可以解决我的问题,但我真的希望它们存在。
编辑:似乎使用“ab”作为列名会给我 ER_BAD_FIELD_ERROR,与“abc”相同,即使它们在表中,但当我使用“abcd”时它说 ER_PARSE_ERROR。我很混乱。我不会在列名中使用点,但我仍然想知道为什么它会产生不同数量的点的不同错误。
【问题讨论】:
-
如果你试图用 \\ 来转义点怎么办。
-
好的。我缩小了我的问题。它找到列名(如果我用不在表中的列名测试它,我会收到 UNKNOWN_COLUMN_NAME 错误。这里我收到 ER_PARSE_ERROR 错误,这意味着我的查询有问题。我会再看一下.
-
我编辑了我原来的问题。
标签: javascript mysql node.js