MySQL查询如何使用和不使用占位符(?)?

我有两种方法在node.js执行sql查询,我想知道这两者之间的区别。 哪一个被推荐使用? 为什么??

第一种方法

 var userId = 1; var columns = ['username', 'email']; var query = connection.query('SELECT ?? FROM ?? WHERE id = ?', [columns, 'users', userId], function(err, results) { // ... }); 

第二种方法

 var userId = 1; var query = connection.query('SELECT username,email FROM UserTable WHERE id=?', [userId], function(err, results) { // ... }); 

请告诉我这两个机制的确切使用。

双重问号语法?? 在replacestring中,在将分隔符中的replace参数发送到服务器之前将其包装。 分隔符适用于表名和列名。 所以你的第一个例子, 'SELECT ?? FROM ?? WHERE id = ?' 'SELECT ?? FROM ?? WHERE id = ?' 发送

 SELECT `username`, `email` FROM `users` WHERE id = '1' 

到服务器。

第二个, 'SELECT username,email FROM UserTable WHERE id=?' ,发送

 SELECT username,email FROM UserTable WHERE id='1'