如何在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作为参数传递给mysql.createConnection)时,它无法逃脱百分号:
debug:true
mysql.createConnection
{ command: 3, sql: 'SELECT * from django_session where session_key like \'%ee20e966289cd7%\'' }
(它 确实 转义了单引号,但这仅用于显示目的)
(使用mysql@2.0.0-alpha8)
mysql@2.0.0-alpha8