идентификатор запроса mysjl nodejs '?'ошибка, но работа конкатенированного запроса - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь делать общие запросы на своем сайте, я обрабатывал данные с параметрами в течение всего моего проекта все это время и без каких-либо проблем, теперь с этими таблицами у меня не работает, если я делаю это следующим образом:

в браузере: "localhost:3000/user/2/table/users/list "

router.get('/user/:userid/table/:Tablename/list', function(){
  var table = req.params.Tablename;

  db.get().query('SELECT * FROM  ? ',[table] ,function(err, rows, fields) {
    if (err) throw err;
    done(rows);
  });

});

, и это приводит к ошибке:

ER_PARSE_ERROR: у вас есть ошибка в вашем SQLсинтаксис;проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с '' пользователями '' в строке 1


, но это сработает, если я сделаю это:


db.get().query('SELECT * FROM  '+table ,function(err, rows, fields) {
        if (err) throw err;
        done(rows);
      });

Я не понимаю, почему это происходит, но я тоже не хочу так оставлять, я чувствую, что это неправильно, кроме того,Есть ли неудобство в том, чтобы оставить это таким образом?

1 Ответ

0 голосов
/ 25 октября 2018

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

использовать ?? для идентификаторов и ? для значений

Как объяснено в документации, это будет пример

запроса: "SELECT * FROM ?? WHERE ?? = ?"

Я надеюсь, что мое невежество и мой собственный ответ помогут кому-то в будущем хе-хе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...