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

473
Views
¿Cómo puedo enviar texto desde un editor de texto enriquecido a una base de datos SQL?

Estoy trabajando en una aplicación de reacción, y esta aplicación de reacción usa un editor de texto enriquecido de una biblioteca llamada Mantine. Este RTE genera datos envueltos en etiquetas html. Cuando envío esos datos a mi base de datos sql, se rechaza diciendo:

Tiene un error en su sintaxis SQL; verifique el manual que corresponde a la versión de su servidor MySQL para obtener la sintaxis correcta para usar cerca de 'ql-align-justify">text text tex texttex texttex texttex texttex texttex texttex t' en la línea 1

Esto sucede cuando hay saltos de línea en el texto o modificación de texto (por lo que crea uno o múltiples
etiquetas No verifiqué si funciona con todos los demás controles como negrita y cursiva, pero probablemente sí. Sé que no es seguro enviar este tipo de datos a una base de datos SQL. Pero, ¿cómo debo proceder para enviar el artículo de forma segura (sin las etiquetas html) y mostrarlo de la forma correcta (memorizar las negritas y los saltos de línea, etc.)?

estoy usando reaccionar, nodejs express para el servidor con mysql2 y el banco de trabajo MySQL.

Este es el código del lado del servidor que intercepta el código y lo envía a la base de datos.

 exports.createPost = (req, res, next) => { console.log(req.body) const data = `"${req.body.user_id}", "${req.body.title}", "${req.body.article}", "${req.body.tags}","${req.body.author}", "${req.body.date}"` const stmt = `INSERT INTO groupomania_social.articles(user_id,title,article,tags,author,date)VALUES(${data})` con.query(stmt, (err, results, fields) => { if (err) { return console.error(err.message) } return res.status(200).json({ message: 'new article created' }) }) }
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

En lugar de redactar la consulta como una cadena, utilice consultas parametrizadas:

 conn.execute('Select name from employee where id = ?', [id]);

Esto trata sus datos/parámetros como separados del texto de la consulta y también lo protege contra la inyección de SQL.

about 4 years ago · Juan Pablo Isaza Report

0

El comentario de @farooq ayudó, al principio no funcionaba porque almacené en búfer todo el artículo (autor, ID de usuario, etc.) cuando necesitaba almacenar en búfer el artículo real (procedente del editor de texto). todo el objeto del artículo con el autor y el resto de la información es demasiado grande.

aquí está el código

 // create a buffer const buff = Buffer.from(req.body.article, 'utf-8') // decode buffer as Base64 const base64 = buff.toString('base64') const data = `"${req.body.user_id}", "${req.body.title}", "${base64}", "${req.body.tags}","${req.body.author}", "${req.body.date}"` const stmt = `INSERT INTO groupomania_social.articles(user_id,title,article,tags,author,date)VALUES(${data})` con.query(stmt, (err, results, fields) => { if (err) { return console.error(err.message) } return res.status(200).json({ message: 'new article created' }) })

Entonces, cuando el servidor recibe la solicitud, crea una cadena "segura" con ella, la envía a la base de datos, luego la decodifica cuando la recibe y la envía al frente.

Las consultas parametrizadas probablemente podrían funcionar, pero la oración de consulta es difícil de entender en esta situación.

gracias a todos los que intentaron ayudar, espero que esto ayude a alguien más tarde. (todavía no se recomienda renderizar html desde una cadena en reaccionar)

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!