在nodejs中parsingstring

我正在使用nodejs uploading images

我的query是这样的:

 var user = req.body; var imgurl=projectDir +"/uploads/"+req.files.displayImage.name; var sql= "INSERT INTO users values('','"+user.name+"','"+user.email+"','"+user.user+"','"+user.pass+"','"+imgurl+"',now())"; 

一切顺利,接受一个当它插入imgurl它不parse它,

我的project directoryD:\node也得到它在projectDir =D:\node

但它会insert database如:

 D: ode/uploads/canvas.png 

我知道它将\n new line

所以,我的question是如何防止这一点,我应该做的both single and double quotes insertion

谢谢。

使用\ \\n\" \'等方式将它们转义出来

这是一个相关的问题,回答您的查询 。 方法:

 function mysql_real_escape_string (str) { return str.replace(/[\0\x08\x09\x1a\n\r"'\\\%]/g, function (char) { switch (char) { case "\0": return "\\0"; case "\x08": return "\\b"; case "\x09": return "\\t"; case "\x1a": return "\\z"; case "\n": return "\\n"; case "\r": return "\\r"; case "\"": case "'": case "\\": case "%": return "\\"+char; // prepends a backslash to backslash, percent, // and double/single quotes } }); } 

您可以将mysql_real_escape_string()函数作为一个单独的模块存储,并在使用之前要求它,或者直接将其插入将要使用它的.js文件。 你可以使用它,如下所示:

 var sql= "INSERT INTO users values('','"+user.name+"','"+user.email+"','"+user.user+"','"+user.pass+"','"+mysql_real_escape_string(imgurl)+"',now())"; 

你应该考虑使用'?'来准备你的查询 语法( https://github.com/felixge/node-mysql#preparing-queries )。

 var sql= "INSERT INTO users SET ?"; // Connection attained as listed above. connection.query( sql, { name:user.name, email:user.email, user:user.user, pass:user.pass, image:imgurl, timestamp:now()}, function(err, result){ // check result if err is undefined. }); 

使用这种模式,node-mysql将为您执行所有转义和安全检查。

希望这可以帮助…

呃,转义你的查询string中的所有反斜杠和引号。 总是使用connection.escape

 var mysql = require('mysql'); var connection = mysql.createConnection(...); var userId = 'some user provided value'; var sql = 'SELECT * FROM users WHERE id = ' + connection.escape(userId); connection.query(sql, function(err, results) { // ... });