watercoldyi
6/8/2018 - 7:12 AM

mysql-utility.lua

local mysql = require "resty.mysql"
local M = {}
local function open()
    local db,err = mysql:new()
    assert(db,err)
    local ok,err = db:connect {
        host = "127.0.0.1",
        user = "root",
        password = "123456",
        port = 3306,
        charset = "utf8",
        database = "zscq",
        max_packet_size = 1024*1024*20
    }
    assert(ok,err)
    return db
end

local function bind_param(sql,p)
    local rpl = function(name)  
        return ngx.quote_sql_str(p[string.sub(name,2)] or name)
    end
    return string.gsub(sql,"@[%w_]+",rpl)
end

function M.query_list(sql,param)
    local db = open()
    if param then
        sql = bind_param(sql,param)
    end
    local r,err = db:query(sql) 
    assert(r,err)
    return (#r > 0) and r or {}
end

function M.query_one(sql,param)
    local r = M.query_list(sql,param)
    return (#r > 0) and r[1] or nil
end

function M.query_nothing(sql,param)
     local db = open()
    if param then
        sql = bind_param(sql,param)
    end
    local r,err = db:query(sql) 
    assert(r,err)
    return r.affected_rows
end

return M