En la consulta SQL donde la cláusula de la ciudad cuando coloco la cadena 'delhi' obtengo resultados, pero cuando coloco una variable como la siguiente, aparece el error columna desconocida delhi en la cláusula where. ¿Cómo resolver el problema?
router.get('/filter/:city', (req, res) => { const location = req.params.city; const singleQuoteLocation = location.replace(/"/g, "'"); connection.query( `select * from weather_data where city=${singleQuoteLocation}`, (err, results, field) => { if (err) { console.log(err); } else { res.status(200).send(results); console.log(results); } } ); });Debería usar una declaración preparada con un ? marcador de posición para el valor de la city . Luego, vincule una variable JS al ? .
router.get('/filter/:city', (req, res) => { const location = req.params.city; connection.query( "SELECT * FROM weather_data WHERE city = ?", [location], (err, results, field) => { if (err) { console.log(err); } else { res.status(200).send(results); console.log(results); } } ); }); Tenga en cuenta que al usar una declaración preparada no hay necesidad de masajear la variable de location haciendo cosas como envolver entre comillas simples. En su lugar, deje que su controlador de MySQL se preocupe por cómo manejar esto, a través de la declaración preparada.
`select * from weather_data where city = \'${singleQuoteLocation}\' `