格式1
var where={
'city|=':'010',
'logintime|>':14433343,
'nickname|like':'%xxxx%'
}
格式2
var where=[
['city','=','010'],
['logintime','>',144334343],
['nickname','like','%xxx%']
];
function buildQuery(where){
} 那种格式用起来更方便?
实践告诉你那种都有问题,而且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 后面的值可能是变量,这里只是写的例子