如何使SQL查询文本参数接受包含撇号

时间:2017-04-03 09:04:07

标签: sql node.js

我如何执行SQL查询以将数据插入数据库。请注意,表dbo.Plans中的字段PlanDetails是一个文本字段。然而,当用户试图输入包含撇号的句子时(例如,我将进入睡眠状态)。通过HTML表单。数据库在ll)附近返回错误" Incorect语法,它引用了撇号问题。在这种情况下,我应该如何修改下面的代码使其接受带撇号的句子?据说我可以使用参数化查询。在这个节点js例子中,我该怎么做?

CreatePlan : function (newPlan , UserID, DisplayName, Email, callback) {
    var sql = require('mssql');
    var config = require('./configuration/sqlconfig');
    var conn = new sql.Connection(config);
    var req = new sql.Request(conn);
    conn.connect(function (err) {
        if (err) {
            console.log(err);
            return;
        } 
        console.log('Attempting to Insert new learning plan...');
        req.query('INSERT INTO dbo.Plans (PlanTitle, PlanTopic, OwnerID, OwnerName, PlanDetails, TargetLearners, OwnerContact) VALUES ("' + newPlan.PlanTitle + '", "' + newPlan.PlanTopic + '", "' + UserID + '", "' + DisplayName + '", "' + newPlan.PlanDetails + '", "' + newPlan.TargetLearners + '", "' +Email+ '");', function (err) {
            if (err) {
                console.log(err);
            } else {
                console.log("Added one new learning plan");
                console.log("The new plan title is " + newPlan.PlanTitle);
                callback();
            }
            conn.close();
        });
    });
},

1 个答案:

答案 0 :(得分:0)

在SQL(以及许多其他语言)中,您必须转义特殊字符以避免代码中的任何歧义。有很多关于如何逃避以及哪个角色与其他互联网有关的文档。

以下是关于转义字符的维基百科文章:https://en.wikipedia.org/wiki/Escape_character

以下是回答您问题的stackoverflow帖子:How do I escape special characters in MySQL?

但是我应该警告你关于SQL注入,你使用的代码不安全,你应该看看这个问题的好习惯。