最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何使用带有准备好的语句的数据数组更新多列?

IT培训 admin 3浏览 0评论

如何使用带有准备好的语句的数据数组更新多列?

我有2个数组:

columns = ['column1', 'column2'];
data = ['data1', 'data2'];

我想使用准备好的查询更新表:

conn.query('UPDATE table SET ?? = ? WHERE id = ?', [columns, data, id], 
function(err, info){

SQL例外查询:

UPDATE table SET column1 = 'data1', column2 = 'data2' WHERE id = 10

但是我得到的东西看起来像:

UPDATE table SET 'column1', 'column2' = 'data1', 'data2' WHERE id = 10

此功能适用于选择或插入,但似乎不适用于更新查询。关于如何获得这项工作的任何想法?

回答如下:

从node-mysql docs,关于转义查询值,我们有这个:

数组变成列表,例如['a','b']变为'a','b'

,因此无法按您期望的方式工作。

但是,在文档中我们也有这个:

对象被转换为key ='val'对。嵌套的对象将转换为字符串。

带有示例:

var post  = {id: 1, title: 'Hello MySQL'};
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
  // Neat!
});
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'

因此,为了做您想做的事,最好的选择IMO是将您的数组转换成类似这样的对象:

{
  column1: 'data1',
  column2: 'data2'
}

如何使用带有准备好的语句的数据数组更新多列?

我有2个数组:

columns = ['column1', 'column2'];
data = ['data1', 'data2'];

我想使用准备好的查询更新表:

conn.query('UPDATE table SET ?? = ? WHERE id = ?', [columns, data, id], 
function(err, info){

SQL例外查询:

UPDATE table SET column1 = 'data1', column2 = 'data2' WHERE id = 10

但是我得到的东西看起来像:

UPDATE table SET 'column1', 'column2' = 'data1', 'data2' WHERE id = 10

此功能适用于选择或插入,但似乎不适用于更新查询。关于如何获得这项工作的任何想法?

回答如下:

从node-mysql docs,关于转义查询值,我们有这个:

数组变成列表,例如['a','b']变为'a','b'

,因此无法按您期望的方式工作。

但是,在文档中我们也有这个:

对象被转换为key ='val'对。嵌套的对象将转换为字符串。

带有示例:

var post  = {id: 1, title: 'Hello MySQL'};
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
  // Neat!
});
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'

因此,为了做您想做的事,最好的选择IMO是将您的数组转换成类似这样的对象:

{
  column1: 'data1',
  column2: 'data2'
}
发布评论

评论列表 (0)

  1. 暂无评论