在维基节点mysql的,我注意到变量(样)插入SQL查询两种不同的方式,一种是通过在查询字符串中间插入一个变量,另一种方式是通过将?在查询字符串,并?在下一个参数的数组中定义这些值。?查询中替换的值将被转义。
?
有什么区别?什么时候应该在另一个上使用?(如果我们希望表名是一个变量,是否应该将其转义?)
维基密码
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注入证明。选项1将在5分钟内使您的网站被黑客入侵,而黑客将很难突破选项2。
即使在性能选项2中也可能更快一些。
但是 :表名不能使用进行转义,?所以不要去那里。只要确保用户不能手动输入表名,您就可以免受黑客的攻击。
-编辑-
您为什么仍要使表名可变?