我正在使用nodejs
上传图片
我的查询
是这样的:
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
时它不会解析
它,
我的项目目录
是D:\node
我也在 projectDir =D:\node
但是它会像这样插入
到数据库
中:
D:
ode/uploads/canvas.png
我知道它将 \n
转换为 new line
,
所以,我的问题
是如何防止这种情况发生以及我应该如何处理单引号和双引号
插入
?
谢谢。
最佳答案
使用 \
转义它们,例如 \\n
或 \"
\'
等。
Here's a related question that answers your query . 方法:
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())";
关于mysql - 在nodejs中解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15430000/