节点MySQL转义LIKE语句

如何在node-mysql中转义MySQL LIKE语句?

东西沿线

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

结果是

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

这是一个语法错误。 如果我使用替代语法

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

导致类似的语法错误。 我也试过了

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

这只是逃避'%'的标志。

不知道为什么它是逃避你的最后一个例子% ,因为这对我来说很好:

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

当我打开驱动程序中的debug:true (传递debug:true作为参数到mysql.createConnection )时,它不会转义百分号:

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

(它确实逃避了单引号,但这只是为了显示目的)

(使用mysql@2.0.0-alpha8

我已经成功了类似的东西

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