110 lines
3.1 KiB
Lua
110 lines
3.1 KiB
Lua
---
|
||
--- Created by mark.
|
||
--- Desc: 演示对OpenResty中使用Lua对MySQL操作
|
||
--- Note:本Lua脚本借鉴了网络,未经测试,仅供参考,也不提供任何技术支持
|
||
---
|
||
local function close_db(db)
|
||
if not db then
|
||
return
|
||
end
|
||
db:close()
|
||
end
|
||
|
||
local mysql = require("resty.mysql")
|
||
|
||
local db, err = mysql:new()
|
||
if not db then
|
||
ngx.say("new mysql error : ", err)
|
||
return
|
||
end
|
||
|
||
db:set_timeout(1000)
|
||
|
||
local props = {
|
||
host = "127.0.0.1",
|
||
port = 3306,
|
||
database = "mysql",
|
||
user = "root",
|
||
password = "123"
|
||
}
|
||
|
||
local res, err, errno, sqlstate = db:connect(props)
|
||
|
||
if not res then
|
||
ngx.say("connect to mysql error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
|
||
---------------------------------------
|
||
-- 执行SQL语句范例
|
||
|
||
local create_table_sql = "create table test(id int primary key auto_increment, ch varchar(100))"
|
||
res, err, errno, sqlstate = db:query(create_table_sql)
|
||
if not res then
|
||
ngx.say("create table error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
|
||
local drop_table_sql = "drop table if exists test"
|
||
res, err, errno, sqlstate = db:query(drop_table_sql)
|
||
if not res then
|
||
ngx.say("drop table error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
|
||
local insert_sql = "insert into test (ch) values('hello')"
|
||
res, err, errno, sqlstate = db:query(insert_sql)
|
||
if not res then
|
||
ngx.say("insert error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
res, err, errno, sqlstate = db:query(insert_sql)
|
||
ngx.say("insert rows : ", res.affected_rows, " , id : ", res.insert_id, "<br/>")
|
||
|
||
|
||
local update_sql = "update test set ch = 'hello2' where id =" .. res.insert_id
|
||
res, err, errno, sqlstate = db:query(update_sql)
|
||
if not res then
|
||
ngx.say("update error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
ngx.say("update rows : ", res.affected_rows, "<br/>")
|
||
|
||
|
||
local select_sql = "select id, ch from test"
|
||
res, err, errno, sqlstate = db:query(select_sql)
|
||
if not res then
|
||
ngx.say("select error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
for i, row in ipairs(res) do
|
||
for name, value in pairs(row) do
|
||
ngx.say("select row ", i, " : ", name, " = ", value, "<br/>")
|
||
end
|
||
end
|
||
ngx.say("<br/>")
|
||
|
||
|
||
local ch_param = ngx.req.get_uri_args()["ch"] or ''
|
||
local query_sql = "select id, ch from test where ch = " .. ngx.quote_sql_str(ch_param)
|
||
res, err, errno, sqlstate = db:query(query_sql)
|
||
if not res then
|
||
ngx.say("select error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
for i, row in ipairs(res) do
|
||
for name, value in pairs(row) do
|
||
ngx.say("select row ", i, " : ", name, " = ", value, "<br/>")
|
||
end
|
||
end
|
||
|
||
|
||
local delete_sql = "delete from test"
|
||
res, err, errno, sqlstate = db:query(delete_sql)
|
||
if not res then
|
||
ngx.say("delete error : ", err, " , errno : ", errno, " , sqlstate : ", sqlstate)
|
||
return close_db(db)
|
||
end
|
||
ngx.say("delete rows : ", res.affected_rows, "<br/>")
|
||
|
||
close_db(db) |