Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

296
Views
¿Cómo escapar de las comillas simples (apóstrofes) en la consulta MySQL a través de Node.js?

Estoy haciendo un programa donde el usuario ingresará datos en entradas en un sitio web. Esta información se retransmitirá al servidor mediante socket.io y se almacenará en una base de datos. Estoy usando esta biblioteca para acceder a MySQL desde Node.js. Por lo general, cuando el usuario ingresa los datos, está bien. Pero cuando los datos incluyen comillas simples, las cosas no funcionan. Aquí hay un ejemplo:

 let data = "LET'S GO"; // this is the data that the user inputs // if it has single quotations in it, the code doesn't work // otherwise it does connection.getConnection(function(error, conn) { if (error) throw error; // if there's an error while connecting, throw it conn.query( `INSERT INTO table_name (column) VALUES ('${data}')`, // make query with this MySQL call function(err, result) { conn.release(); if (err) throw err; // if there's an error with the call, throw it. Usually where my error comes } ) })

Como se comentó en el código anterior, si la variable data tiene comillas simples, MySQL devolverá un error como el siguiente:

 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 's go.' at line 1

Después de encontrarme inicialmente con este error, he estado buscando una solución. En esta página , dice usar mysql.escape() , connection.escape() o pool.escape() para eliminar este problema. He buscado en todas las soluciones de Stack Overflow, pero todas parecen apuntar a esto. El problema con esta solución es que los data se ingresan en la consulta de MySQL con dos comillas simples a su alrededor. Por lo tanto, la consulta se parece un poco a esto:

 INSERT INTO table_name (column) VALUES (''DATA_HERE'')

En vez de:

 INSERT INTO table_name (column) VALUES ('DATA_HERE')

Además, he analizado problemas similares con mysql.escape() , connection.escape() y pool.escape() , pero no han sido de ayuda porque la mayoría de ellos no tienen soluciones directas.

¿Hay alguna OTRA forma de escapar de estas comillas simples (apóstrafes), si aparecieran en los data que ingresa el usuario?

Gracias de antemano. Cualquier y toda ayuda es apreciada.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Bien, parece que encontré una respuesta. Mi query debe formatearse de manera similar a las prepared statements (gracias a @danblack por esto). Debe hacerse como tal:

 conn.query( `INSERT INTO table_name (column) VALUES (?)`, [data], function(err, result) { conn.release(); if (err) throw err; } )

Reemplacé '${data}' con ? y, en el siguiente argumento de la función conn.query() , di el valor que ? debe ser reemplazado por.

Si hay más de un valor de datos que debe "escaparse" de manera similar, haría lo siguiente:

 conn.query( `INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)`, [data1, data2, data3], function(err, result) { conn.release(); if (err) throw err; } )

Si alguien más tiene una pregunta pendiente similar, espero que esto responda.

Nota: esta forma de "escapar" no solo funciona con declaraciones INSERT . Creo que se puede usar para todas las demás consultas.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!