@Nikita1244
Anonymous

Ошибка MySQL: ER_PARSE_ERROR, что делать?

Здравствуйте! Был мой вопрос. Я наконец, сделал вот так(похожий код, но я записываю результат из БД в переменную):
код

app.post('/login', urlencodedParser, async(req, res) => {
    let username = req.body.username;
    let password = req.body.password;
    console.log('before await');
    const [row] = await dbConnection.query( // Здесь мы запрашиваем данные, существует ли введенный пользователем логин или нет. 
        "SELECT * FROM `users` WHERE `name` = ? AND `password` = ?", [username], [password]
    );
    if (row.length > 0) {
        // Authenticate the user
        req.session.loggedin = true;
        req.session.username = username;
        // Redirect to home page
        res.send(`Вы вошли под именем ${username}`);
        res.end()
    } else {
        res.send('Неправильный пароль или имя пользователя');
    }
});


И наконец, обрадовался - ОШИБКА! Раньше она не показывалась(см. вопрос который был упомянут в начале). Как ее исправить?
Ошибка

/home/nikita/galaxy-of-hearing/node_modules/mysql2/promise.js:341
    const localErr = new Error();
                     ^

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
    at PromisePool.query (/home/nikita/galaxy-of-hearing/node_modules/mysql2/promise.js:341:22)
    at /home/nikita/galaxy-of-hearing/index.js:85:38
    at Layer.handle [as handle_request] (/home/nikita/galaxy-of-hearing/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/nikita/galaxy-of-hearing/node_modules/express/lib/router/route.js:144:13)
    at urlencodedParser (/home/nikita/galaxy-of-hearing/node_modules/body-parser/lib/types/urlencoded.js:82:7)
    at Layer.handle [as handle_request] (/home/nikita/galaxy-of-hearing/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/nikita/galaxy-of-hearing/node_modules/express/lib/router/route.js:144:13)
    at Route.dispatch (/home/nikita/galaxy-of-hearing/node_modules/express/lib/router/route.js:114:3)
    at Layer.handle [as handle_request] (/home/nikita/galaxy-of-hearing/node_modules/express/lib/router/layer.js:95:5)
    at /home/nikita/galaxy-of-hearing/node_modules/express/lib/router/index.js:284:15 {
  code: 'ER_PARSE_ERROR',
  errno: 1064,
  sql: "SELECT * FROM `users` WHERE `name`='root' AND password = ?",
  sqlState: '42000',
  sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1"
}

  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
const [row] = await dbConnection.query( логин или нет. 
        "SELECT * 
         FROM `users` 
         WHERE `name` = ? 
         AND `password` = ?",
     [username, password] // <- тут ОДИН МАССИВ, RTFM!!!
    );
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@alexbprofit
Junior SE
Кавычки замените на нормальные
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы