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)
?