多个查询条件参数格式,哪种格式更简单方便?
发布于 9 年前 作者 yakczh 3941 次浏览 最后一次编辑是 8 年前 来自 问答

格式1



  var where={
'city|=':'010',
'logintime|>':14433343,
'nickname|like':'%xxxx%'
}

格式2

var where=[
 ['city','=','010'],
 ['logintime','>',144334343],
 ['nickname','like','%xxx%']
  ];

function buildQuery(where){

} 那种格式用起来更方便?

8 回复

实践告诉你那种都有问题,而且sql注入的风险,看一下knexjs的源代码

我是这样做的

lib.dal(‘SELECT SQL_CALC_FOUND_ROWS a.id,a.title,b.name pcategories_id, b.id pcategories_id_value,’) (‘a.availability, a.order_processing, a.update_time’) (‘FROM products a’) (‘LEFT JOIN pcategories b ON b.id = a.pcategories_id’) (‘WHERE 1=1’) (‘AND a.pcategories_id=?’, opt.pcategories_idl) //设置null此条件将不生效 (‘AND (locate(?,a.id) > 0 OR locate(?,a.title) > 0)’, opt.search_value) (‘ORDER BY a.id DESC limit ?,?’, limit[0], limit[1]).query(done);

@qimenxiaozi sql注入可以在函数里面处理 ,我只是关心哪种格式 用起来比较方便

@yakczh 我其实不明白,那样写和直接写sql有什么区别

@2881099 这样可以统一在函数里处理sql注入 手写sql只能依赖每个程序员了 每个人一个写法,没法做统一处理

@yakczh 这条理有点牵强,参数化传递值,能怎么注入

看起来格式二更清晰

@2881099 后面的值可能是变量,这里只是写的例子

回到顶部