在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 directory
是D:\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) { // ... });
- 在mysql中的UTC_timestamp返回错误的值
- 使用jQuery更新表
- 从node.js应用连接到mysql,错误:“dyld:lazy symbol binding failed:Symbol not found:_mysql_init”
- 如何在同一个NodeJs服务器上使用Mysql和MongoDB?
- 如何处理从POST(NodeJs / Sequelize / Express)收到的数据
- 为什么Node.js中的MySQL如此之慢?
- 仅在主表上聚合GROUP BY,而不是在连接中完整连接的表
- 数据库url在MySQL工作台,但不是node.js(getaddrinfo ENOTFOUND)
- NodeJS MySQL检查多个