首页 > 解决方案 > JavaScript 中的错误 SQL 查询?

问题描述

在开始之前,我已经意识到通过 JavaScript 连接到数据库所带来的风险。这个项目的问题是它的目的略有不同,所以我可以使用 JavaScript。

document.getElementsByClassName("option")[0].onclick = function() {
    event.preventDefault();
    var mysql = require('mysql');
    var con = mysql.createConnection({
        host: "localhost",
        user: "root",
        password: "",
        database: "dbname"
    });
    con.connect(function(err) {
        if (err) throw err;
        var email = document.getElementById("email").value;
        var password = document.getElementById("password").value;
        var sql = 'SELECT * FROM accounts WHERE email = ' + mysql.escape(email) + ' AND password = ' + mysql.escape(password);
        con.query(sql, function (err, result) {
            if (err) throw err;
            console.log(result);
        });
    });
}

所以,我以前在技术上用 PHP 做过这个。只是我现在用 JavaScript 来做。然而,有些事情显然是错误的。如您所见,我想在控制台中查看结果。然而,我只剩下这个:

在此处输入图像描述

我不能说我是一个经验丰富的程序员——事实上,这只是某种实践项目,我是一名学生。因此,任何形式的帮助将不胜感激!

标签: javascriptmysql

解决方案


您需要在 SQL 中引用字符串。您没有在电子邮件和密码周围加上引号。

但是最好使用参数而不是将变量替换到 SQL 中,即使您对它们进行了转义。

    var sql = 'SELECT * FROM accounts WHERE email = ? AND password = ?';
    con.query(sql, [email, password], function (err, result) {
        if (err) throw err;
        console.log(result);
    });

推荐阅读