为什么即使我觉得正确也不能执行此查询?

时间:2019-11-09 19:05:17

标签: javascript node.js

我当前正在尝试创建一个函数来在数据库中注册用户,但是当它尝试执行“插入”查询时,会返回一个错误。

我每次尝试都使用不同的引号,我尝试将值放在[]内的查询之外:像Values?,[nom,prenom,...] 我在邮递员中使用post方法尝试。

if(nom && prenom && mail && password && lieu) {
    var rgx=/(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/;
    co.connection.query("SELECT Mail, Password FROM utilisateur WHERE Mail = ? AND Password = ?", [mail, password], function(error, rows){
        if (!!error) {
            console.log('Erreur dans la requête');
        } else if(password.length >= 8 && rgx.test(password)) {
            co.connection.query("INSERT INTO `utilisateur` (`Nom`, `Prenom`, `Mail`, `Password`, `Id_Localisation`) VALUES (`"+nom+"` , `"+prenom+"`, `"+mail+"`, `"+password+"`, `"+lieu+"`)", function(error, rows){
                if (!!error) {
                    console.log("Erreur dans la requête d'envoi");
                } else {
                    res.send('Compte créé avec succès !');
                    res.end();
                }
            })
        } else if(password.length < 8){
            res.send('Le mot de passe doit contenir au moins 8 caractères !');
            res.end();
        } else if(!rgx.test(password)) {
            res.send('Le mot de passe doit contenir au moins une lettre minuscule, une majuscule et un chiffre!');
            res.end();
        } /*else if(rows[0].Mail == mail) {
            res.send('Un compte avec cette adresse existe déjà !');
            res.end();
        }*/
    })

}

else {
    res.send('Veuillez remplir tout les champs !');
    res.end();
}

我希望获得“ Comptecrééavecsuccès”

1 个答案:

答案 0 :(得分:0)

请勿在{{1​​}}语句的values子句中传递的文字值周围使用反引号。用单引号将起作用:反引号分隔的名称指数据库对象名称(表,列等),而单引号分隔字符串文字。

但是将用户定义的字符串注入SQL字符串是一种不好的做法,因此应像在第一个查询中一样使用参数:

insert