将variables插入到node-mysql的SQL查询中

在node-mysql的wiki中,我注意到variables(种类)以两种不同的方式插入到SQL查询中,一种是通过在查询string的中间插入一个variables,另一种方式是通过将? 在查询string和定义这些值? 在下一个参数的数组中。 值取代? 在查询中被转义。

有什么区别,我应该什么时候使用一个呢? (如果我们希望表名是一个variables,是否应该逃脱?)

维基代码

 client.query( 'INSERT INTO '+TEST_TABLE+' '+ 'SET title = ?, text = ?, created = ?', ['super cool', 'this is a nice text', '2010-08-16 10:00:23'] ); 

Wiki链接 : https : //github.com/felixge/node-mysql

Wiki摘录

发送一个sql查询到服务器。 '?' 字符可以用作参数数组的占位符,在发送最终查询之前,这些参数将被安全地转义。

此方法返回一个Query对象,该对象可用于传入传入的行数据。

始终支持选项2,因为它们是SQL注入certificate。 选项1会让你的网站在5分钟之内被黑客攻击,而黑客将很难打破选项2。

即使在性能方面,选项2可能会稍微快一点。

但是 :表名不能用? 所以不要去那里。 只要确保用户不能手动input表名,就可以避免黑客入侵。

-编辑-

你为什么要使表名称variables呢?