Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

345
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda