现在的写法是这样的:
local mysql = require "resty.mysql"
local db = mysql:new()
db:set_timeout(1000) -- 1 sec
-- or connect to a unix domain socket file listened
-- by a mysql server:
-- local ok, err, errno, sqlstate =
-- db:connect{
-- path = "unix:/path/to/mysql.sock",
-- database = "ngx_test",
-- user = "ngx_test",
-- password = "ngx_test" }
local ok, err, errno, sqlstate = db:connect{
host = "127.0.0.1",
port = 3306,
database = "ngx_test",
user = "ngx_test",
password = "ngx_test",
max_packet_size = 1024 * 1024 }
if not ok then
ngx.say("failed to connect: ", err, ": ", errno, " ", sqlstate)
return
end
ngx.say("connected to mysql.")
local res, err, errno, sqlstate =
db:query("drop table if exists cats")
if not res then
ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".")
return
end
每个查询都是重复写这几句
local res, err, errno, sqlstate =
db:query("drop table if exists cats")
if not res then
ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".")
return
end
我想把它封闭在一个函数里,比如
function dbquery(query)
local mysql = require "resty.mysql"
local db = mysql:new()
db:set_timeout(30000) -- 1 sec
local result
local ok, err, errno, sqlstate = db:connect({
host = "127.0.0.1",
port = "3306",
database = "food",
user = "root",
password = "passwd",
})
if not ok then
ngx.say("failed to connect: " , err , ": " , errno, " " , sqlstate)
return
end
local res, err, errno, sqlstate = db:query(query)
if not res then
ngx.say("failed to connect: " , err , ": " , errno, " " , sqlstate)
return
end
local ok, err = db:set_keepalive()
if not ok then
ngx.say("failed to set keepalive: " ,err)
return
end
return res
end
然后这样 dbquery(query)这样调用和上面的那种用法有不同之处吗?