Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

350
Visualizações
Error de sintaxis en nodejs con mysql cerca de '?'

Trato de poner mi mano en la base de datos mysql y nodejs. Durante el aprendizaje encuentro un error de sintaxis en el script y no tengo idea de cómo corregir la sintaxis.

 var express = require('express'); var router = express.Router(); var db=require('../database'); router.get('/form', function(req, res, next) { res.render('users'); }); router.post('/create', function(req, res, next) { // store all the user input data const userDetails=req.body; // insert user data into users table var sql = 'INSERT INTO users SET ?'; db.query(sql, userDetails,function (err, data) { if (err) throw err; console.log("User dat is inserted successfully "); }); res.redirect('/users/form'); // redirect to user form page after inserting the data }); module.exports = router;

aquí está el error:

 code: 'ER_PARSE_ERROR', errno: 1064, 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 '?' at line 1", sqlState: '42000', index: 0, sql: 'INSERT INTO users SET ?'

como referencia: aprendo este código del enlace

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No estoy seguro de cuál es la implementación específica de la función db.query , pero probablemente quieras algo como esto (obtuve el esquema db de tu otro comentario):

 let sql = 'INSERT INTO users SET id=?, fullName=?, emailAddress=?, city=?, country=?'; db.query(sql, userDetails, function (err, data) { if (err) { throw err; } console.log("User dat is inserted successfully "); });

Si eso no funciona, intente configurar la variable SQL en este lugar:

 let sql = 'INSERT INTO users (id, fullName, emailAddress, city, country) VALUES (?, ?, ?, ?, ?)';

Supongo que la variable userDetails hace referencia a un objeto con el siguiente tipo: { id, fullName, emailAddress, city, country } .

SQL requiere un signo de interrogación para cada columna en cada inserción cuando se usan declaraciones preparadas. La función db.query podría estar intentando insertar el objeto directamente como una cadena, lo que podría causar un problema porque su esquema tiene 5 columnas. La sintaxis JSON del objeto en forma de stringified también puede hacer que el analizador SQL se queje.

Si eso no funciona, me gustaría mirar su esquema. Su función parece enviar el objeto req.body a la base de datos directamente, lo que significaría que el usuario está enviando la identificación directamente a la base de datos. Esto es bastante poco común, generalmente la identificación de una fila es generada por el servidor o una columna de incremento automático en la base de datos.

Espero que esto funcione para usted, no dude en responder si tiene alguna pregunta o inquietud.

about 4 years ago · Juan Pablo Isaza Relatório

0

no puede pasar los datos como {campo1: 1, campo2: 2, campo3: 3}. pase esto 'INSERT INTO users SET field1 = ?, field2 = ?';

 const userDetails=[ 1, // this value is field1 2, // this value is field2 ]; // insert user data into users table var sql = 'INSERT INTO users SET field1 = ?, field2 = ?'; db.query(sql, userDetails,function (err, data) { if (err) throw err; console.log("User dat is inserted successfully "); });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda