Вставить запись в таблицу неверный синтаксис для MySQL Query - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь вставить запись в мою таблицу MySQL. Когда я отправляю свою форму, она отправляет запрос на публикацию в «/ admin», который вставляет опубликованные данные в таблицу событий.

Однако вместо вставки записи запрос продолжает выдавать ошибку из-за Error: ER_PARSE_ERROR. Чтобы исправить это, я просмотрел множество примеров запросов на вставку для mysql, но я до сих пор не знаю, что я делаю неправильно. Может кто-нибудь помочь мне с этим? Спасибо!

Изображение ошибки:

image of error

Изображение структуры таблицы MySQL: image of mysql table

app.post('/admin', upload.none(), function(req, res) {
        //store the event
    var event_date = convertDateFormat(req.body.date);
    var start_time = convertTimeStringTo24Hours(req.body.starttime);
    var end_time = convertTimeStringTo24Hours(req.body.endtime);
    var sql = 
        "INSERT INTO events"
        + " (name, description, start_time, end_time, location, max_capacity, hidden_sign_up, other)"
        + " VALUES ?";
    var values = [
        req.body.eventname, 
        req.body.description, 
        event_date + " " + start_time,
        event_date + " " + end_time, 
        req.body.location, 
        req.body.attendee, 
        0, 
        ""
    ];
    con.query(sql, values, function(err, result) {
        if (err) throw err
        res.redirect('/admin')
    });
});

1 Ответ

4 голосов
/ 04 апреля 2019

Вам нужно столько параметров, сколько есть значений для вставки в таблицу, заключенную в круглые скобки.

Так что вам нужно заменить это:

var sql = 
    "INSERT INTO events"
    + " (name, description, start_time, end_time, location, max_capacity, hidden_sign_up, other)"
    + " VALUES ?";

С:

var sql = 
    "INSERT INTO events"
    + " (name, description, start_time, end_time, location, max_capacity, hidden_sign_up, other)"
    + " VALUES (?, ?, ?, ?, ?, ?, ?, ?)"

Насколько вам известно, вам не нужно изменять остальную часть вашего кода (параметры связывания должны передаваться как массив, который вы уже делаете).

...