Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro na sintaxe SQL

Boa tarde. Estou refatorando o código e após alguns erros resolvidos cheguei em mais um.

No Postman aparece a seguinte mensagem: "code": "ER_PARSE_ERROR", "errno": 1064, "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 '3 WHERE id=?' at line 1", "sql": "UPDATE Atendimentos SET 3 WHERE id=?".

Meu código está assim.... Repositório:

  altera(id, valores) {
    const sql = "UPDATE Atendimentos SET ? WHERE id=?";
    return query(sql, id, valores)
  }

Models:

altera(id, valores) {
    if (valores.data) {
      valores.data = moment(valores.data, "DD/MM/YYYY").format(
        "YYYY-MM-DD HH:mm:ss"
      );
    }
    return repositorio.altera(id, valores);
  }

Controllers:

app.patch("/atendimentos/:id", (req, res) => {
    const id = parseInt(req.params.id);
    const valores = req.body;

    Atendimento.altera(id, valores)
    .then(valoresAlterados => res.status(200).json(valoresAlterados))
    .catch(erros => res.status(400).json(erros));
  });

Alguém pode me dizer onde estou errando ? Desde já agradeço a ajuda!

2 respostas

Opa William, tudo bem?

Acho que a primeira coisa a testar é alterar no repositório:

const sql = "UPDATE Atendimentos SET ? WHERE id=?";
 return query(sql, id, valores)

Veja que o primeiro ? deveria ser os valores, e no segundo o id, mas na linha return query(sql, id, valores) você está passando primeiro o id e depois os valores, tente inverter esses parâmetros.

solução!

Bem obrigado! Tentei o que você falou e o erro permaneceu então voltei o código como estava e fiz apenas essa alteração:

 const sql = `UPDATE Atendimentos SET ? WHERE id=${id}`;

e consegui fazer a alteração com sucesso. Mesmo assim muito grato pela ajuda!