nodejs node example async app javascript mysql node.js node-mysql

javascript - node - Nodo MySQL escape como declaración



nodejs mysql npm (3)

He tenido éxito con algo como

"SELECT * FROM card WHERE name LIKE " + connection.escape(''%''+req.body.search+''%'')

¿Cómo escapar de una sentencia MySQL LIKE en node-mysql?

Algo a lo largo de las líneas de

"SELECT * FROM card WHERE name LIKE ''%" + connection.escape(req.body.search) + "%''"

Resultados en

''SELECT * FROM card WHERE name LIKE /'%/'hello/'%/'''

Que es un error de sintaxis. Si utilizo la sintaxis alternativa de

connection.query("SELECT * FROM card WHERE name LIKE ''%?%''", req.body.search, function () {});

Resultados en un error de sintaxis similar. También he intentado

connection.query("SELECT * FROM card WHERE name LIKE ?", ''%'' + req.body.search + ''%'', function () {});

Lo que acaba de escapar del signo ''%''.


No estoy seguro de por qué se está escapando del % en su último ejemplo, porque eso funciona bien para mí:

// lifted from my code: var value = ''ee20e966289cd7''; connection.query(''SELECT * from django_session where session_key like ?'', ''%'' + value + ''%'', ...) // Result: [ { session_key: ''713ee20e966289cd71b936084a1e613e'', ... } ]

Cuando mysql.createConnection depuración en el controlador (pase debug:true como argumento a mysql.createConnection ), no escapa al signo de porcentaje:

{ command: 3, sql: ''SELECT * from django_session where session_key like /'%ee20e966289cd7%/''' }

(Se escapa de la comilla simple, pero eso es solo para fines de visualización)

(usando [email protected] )


Qué tal si

mysql.format("SELECT * FROM card WHERE name LIKE CONCAT(''%'', ?, ''%'')", req.body.search)

?