mysql - 在nodejs中解析字符串

标签 mysql node.js

我正在使用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/

相关文章:

php - 连接 MySQL 和 Android

javascript - 我无法在 Node.js 中的 readFile() 回调中更新对象属性

javascript - 将 NodeJS 流通过管道传输到数组

javascript - Node.js 对象函数 Number() { [native code] } 没有方法 'isInteger'

php - 查询获取某项出现的次数

php - 不同的 mysql 结果 - codeigniter

mysql - having 子句与 mysql 中的 where 一起使用

php - 在 WordPress 中显示来自 SQL 数据库的数据

node.js - 使用 Node.JS 上传到 Flickr : Invalid auth_token

javascript - slim /工兵 : Body empty on POST