将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呢?