2

uploading images使用していますnodejs

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

しかし、それは次insertdatabaseようになります:

D:
ode/uploads/canvas.png

\nに変換されることを理解していますnew line

だから、私questionはこれを防ぐ方法と私は何をすべきboth single and double quotes insertionですか?

ありがとう。

4

4 に答える 4

5

\そのようなものなど\\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())";
于 2013-03-15T11:08:52.340 に答える
0

うーん、クエリ文字列内のすべてのバックスラッシュと引用符をエスケープします。常に使用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) {
  // ...
});
于 2013-03-15T11:18:38.850 に答える