функция mysql не работает в react после нескольких исключений

#mysql #reactjs

Вопрос:

вот node.js код

 var _num;
app.post("/api/get", (req, res) => {
    _num = req.body.passNum;
    console.log(_num   "insert");
    callDb();
});



var callDb = () => {
    app.get
    ("/api/get", (req, res) => {
        var sqlSelect = "SELECT * FROM day"   _num;
        console.log(_num   "outcome");
        db.query(sqlSelect, (err, result) => {
            res.send(result);

        });
    });
};
 
  1. Что это за код? : этот код получает номер от интерфейса(реагирует) по URL-адресу (с 1 по 3 день) и переходит в var _num внутри бэкенда.
    и функция callDb получает var _num и добавляет в запрос mysql, поэтому в заключение callDb вызывает другую таблицу из mysql(с 1 по 3 день).
  2. в чем проблема? : Первые несколько раз работают нормально, а при нажатии несколько раз это не работает нормально. как вы видите в моем коде, чтобы проверить, правильно ли он работает, я добавил console.log (вставка и результат). как callDb внутри app.post, после того, как _num получит номер от react, должна быть запущена база данных вызовов.

итак, последовательность такова: нажмите URL-адрес day1 — >_num получает значение»1″ и консоль.выходит вставка журнала(1 вставка)->callDb ВЫБЕРИТЕ день1 и консоль.выводится результат журнала (1 результат).

и после повторного нажатия и возврата на главную страницу журнал будет

1инсерт 1 выход

2инсерта 2утком

3инсерта 3утком

1инсерт 1 выход

2инсерта 2утком

3инсерт

так что с шестого раза это создает проблемы. Отображается только вставка, и после щелчка нет изменений в журнале. что означает, что ВЫБОР не сработал. и после обновления страницы результат consolelog дает правильный результат. поэтому каждые 6 кликов пользователю требуется обновление.

Я действительно сбит с толку, потому что он работает несколько раз, и в какой-то момент он тормозит. в чем проблема и как я могу ее решить?

Комментарии:

1. Вы передаете необработанный SQL с клиентского интерфейса на свой сервер MySQL?

2. От node.js. из интерфейса получает _num только через axios и когда node.js Выберите правильную таблицу, на интерфейсе она показывает таблицу.

Ответ №1:

     app.post("/api/get", (req, res) => {
    if(req.body.passNum){//first check if the required parameter is provided
        _num = req.body.passNum; //get the parameter. You need to use 'escape string' to escape other dangerous characters which may lead to sql imjection.
        
        db.query("SELECT * FROM day"   _num, (err, result) => {
            if (err) {
                console.log(err);          
                res.end("An error occcured while reading from the database");
            } else {
                res.send(result);
            }
        });
    }else{
        res.end("required fields are not provided");
    }    
});
 

Комментарии:

1. Я изменил свой код на ваш код, но в chrome написано GET localhost:3001/api/get 404 (Не найден). Я почти уверен, что мой исходный код работал до получения параметра. И нет входа в систему node.js терминал.