防止单引号标记(当mysql转义()

var user = "hi"; //this info comes from the client in reality console.log(user); //user user = client.escape(user); //cient being a Mysql client console.log(user); //'user' 

然后当我插入到数据库中时,单引号仍然存在。 而当我select它时,还有…

有没有办法确保客户端没有做注入的东西,同时,不要在数据库中添加单引号? 或者至less有一种方法来删除它们,如unescape()?

我可以使用user.slice(1,-1)但似乎不正确的做法。

注意:我正在使用Nodejs。

所以我猜你正在使用node-mysql驱动程序,而你的错误是你试图对表单进行查询

 client.query('SELECT * FROM USERS WHERE userName = ?', user, function(err, result){ if (err) { console.log(err); }); 

而你从查询中的错误看起来像是

 check your syntax around 'user_inputted_username''' on line x 

在这种情况下,Andreas Hultgren有正确的答案。 你只是简单地将值转义了两次。 我知道,因为他的build议刚刚解决了我刚刚提到的问题。 只需提供非转义的用户input作为你的参数被转义? 和.query()是逃避你。