INSERT INTO с ошибкой node -mysql
Я пытаюсь вставить некоторые данные с помощью node.js. Я написал следующий код и установил поддержку MySQL через npm, но мне не удалось INSERT INTO
таблицу.
Вот мой код:
var mysql = require('mysql');
function BD() {
var connection = mysql.createConnection({
user: 'root',
password: '',
host: 'localhost',
port: 3306,
database: 'nodejs'
});
return connection;
}
app.post("/user/create", function(req, res) {
var objBD = BD();
var post = {
username: req.body.username,
password: req.body.password
};
objBD.query('INSERT INTO users VALUES ?', post, function(error) {
if (error) {
console.log(error.message);
} else {
console.log('success');
}
});
});
Код HTML:
<form action="/user/create" method="POST" class="form-horizontal">
<input type="text" id="username_input" name="username">
<input type="text" id="password_input" name="password">
<input type="submit" name="Submit" value="Insert" class="btn">
</form>
Сообщение об ошибке:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, который будет использоваться рядом с.'username '=' Test ',' password '=' test 'в строке 1
В чем моя ошибка?
Ответы
Ответ 1
Обратите внимание на документацию node-mysql
:
Если вы обратили внимание, возможно, вы заметили, что это экранирование позволяет вам делать такие вещи:
var post = {id: 1, title: 'Hello MySQL'};
var query = connection.query('INSERT INTO posts SET ?', post, function(err, result) {
// Neat!
});
console.log(query.sql); // INSERT INTO posts SET `id` = 1, `title` = 'Hello MySQL'
Обратите внимание, что вместо VALUES
они используют SET
. INSERT INTO ... SET x = y
- допустимый запрос MySQL, а INSERT INTO ... VALUES x = y
- нет.
Ответ 2
Я знаю, что это старый пост, но я думал, что я поделюсь этим INSERT INTO... VALUES - это допустимая команда (нет SET) и очень полезна для массовых обновлений:
db.query('INSERT INTO myTable (field1, field2, field3) VALUES ?', [values])
где [values] - массив массивов, каждый массив содержит эти три поля и вставлен как запись в таблицу.
Ответ 3
Для других пользователей, у меня была эта же проблема, но оказалось, что это более сложная, не связанная с этим проблема. Я не объявлял 'use strict';
в самой верхней части документа.
Я знаю, что это само по себе не решит проблему с вставкой базы данных, но указало на части моего всего script, которые были неправильно закодированы, и после их исправления он работал как ожидалось.