javascript - 在 MySQL 数据库中使用点 - 使用 Node 更新

标签 javascript mysql node.js

我正在尝试使用 node-mysql 更新包含 Node 中的点的列名称。我喜欢您只需给它一个带键的对象就可以轻松地更新多个列,但是 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]

我知道不在我的列名称中使用点可以解决我的问题,但我真的希望它们在那里。

编辑: 似乎使用“a.b”作为列名会给我 ER_BAD_FIELD_ERROR,与“a.b.c”相同,即使它们在表中,但当我使用“a.b.c.d”时它说 ER_PARSE_ERROR。我很困惑。我不会在我的列名称中使用点,但我仍然想知道为什么它会生成不同数量的点的不同错误。

最佳答案

错误消息中的符号:

`a`.`b`

表示“current_database”(如果 a 不是数据库名称)->“名称为‘a’的表”->“名称为‘b’的列”。所以如果想在列名中使用点,你应该用反引号将它整个引用:

UPDATE table_name.`a.b` = 'hello' WHERE `name` = 'somename';

顺便说一句,我更喜欢使用双下划线表示法而不是点(a__b),因为不使用 backtiks 进行 qouting,请考虑一下。

关于javascript - 在 MySQL 数据库中使用点 - 使用 Node 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35114681/

相关文章:

php - 使用 JQuery 实时更新?

javascript - 如何使用js按多次使用1个数据的顺序打乱数据

asp.net - 使用子域开发 Web 应用程序

javascript - 使用WebClient类返回图像数据并在标签中渲染图像

javascript - 如何计算对象属性已更改的次数

javascript - 将变量传递给 Bootstrap 模态?

MySQL 使用 where 子句进行连接

database - 通过命令行mysqldump数据而不影响Web应用程序

php - 如何在nodejs中实现 "gzencode"(PHP函数)

javascript - 尝试按空间拆分数组元素