nodejs:查询中的绑定错误与like

时间:2018-03-13 16:34:45

标签: mysql node.js

使用nodejs和has和api接收条件,但是当我绑定查询中的条件不起作用时,查询就是这个

SELECT id_comercio, nombre, nit, email FROM coma_comercios WHERE nombre LIKE "%?%"

但数据库正以这种方式重现

  SELECT id_comercio, nombre, nit, email FROM coma_comercios WHERE nombre LIKE "%\'buff\'%"

绑定是buff但不是发送LIKE“%buff%”,而是发送LIKE“%\'buff \'%”

我需要一种正确绑定的方法吗?

有人可以帮助我吗?

这是使用查询的mi模型

ComComercios.prototype.comerciosCriterio = function(criterio) {
var d = q.defer();
this.crud.query(Queries.select_com_comercios_where_criterio, [criterio])
.then((comercios) => {
    if(comercios[0] != null ){
        console.log(comercios);
        d.resolve(comercios[0]);
    }
    else {
        console.log(comercios);
        d.reject(Messages.comercios.comercios_not_found);
    }
})
.fail((err) => {
    console.log(err);
    d.reject(Messages.db.db_error);
});
return d.promise;
};

即时使用节点9.4.0并表达4.0.39

1 个答案:

答案 0 :(得分:0)

绑定变量不能用于部分字符串替换,它们仅用作整个字符串。

因此对整个LIKE表达式使用bind变量。

而不是nombre LIKE "%?%"nombre LIKE ?

然后您的criterio需要包含通配符'%'

即。 '%' + criterio + '%'['%',criterio,'%'].join('')