博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openresty 前端开发入门五之Mysql篇
阅读量:6124 次
发布时间:2019-06-21

本文共 1682 字,大约阅读时间需要 5 分钟。

openresty 前端开发入门五之Mysql篇

这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysql获取数据,并返回给用户

操作mysql主要用到了lua-resty-mysql库,代码可以在上找得到

而且上面也有实例代码

由于官网给出的例子比较基本,代码也比较多,所以我这里主要介绍一些怎么封装一下,简化我们调用的代码

lua/mysql.lua

local mysql = require "resty.mysql"local config = {    host = "localhost",    port = 3306,    database = "mysql",    user = "root",    password = "admin"}local _M = {}function _M.new(self)    local db, err = mysql:new()    if not db then        return nil    end    db:set_timeout(1000) -- 1 sec    local ok, err, errno, sqlstate = db:connect(config)    if not ok then        return nil    end    db.close = close    return dbendfunction close(self)    local sock = self.sock    if not sock then        return nil, "not initialized"    end    if self.subscribed then        return nil, "subscribed state"    end    return sock:setkeepalive(10000, 50)endreturn _M

其实就是简单把连接,跟关闭做一个简单的封装,隐藏繁琐的初始化已经连接池细节,只需要调用new,就自动就链接了redis,close自动使用连接池

lua/hello.lua

local cjson = require "cjson"local mysql = require "mysql"local req = require "req"local args = req.getArgs()local name = args['name']if name == nil or name == "" then    name = "root"    endname = ngx.quote_sql_str(name) -- SQL 转义,将 ' 转成 \', 防SQL注入,并且转义后的变量包含了引号,所以可以直接当成条件值使用local db = mysql:new()local sql = "select * from user where User = " .. namengx.say(sql)ngx.say("
")local res, err, errno, sqlstate = db:query(sql)db:close()if not res then ngx.say(err) return {}endngx.say(cjson.encode(res))

访问

即可获取mysql中的name为root的的所有用户,如果没有name参数,则默认获取root的值

从输出的数据中,可以看出res其实是一个数组,而且不管返回的数据是多少条,它都是一个数组,当我们查询的结果只有一条的时候,可以通过 res[1] 来获取一条记录,每一行数据又是一个table,可以通过列名来得到value

ok,到这里我们已经可以获取用户输入的值,并且从mysql中获取数据,然后返回json数据了,已经可以开发一些简单的接口了

参见demo5部分

转载地址:http://mnbua.baihongyu.com/

你可能感兴趣的文章
centos 下安装g++
查看>>
嵌入式,代码调试----GDB扫盲
查看>>
类斐波那契数列的奇妙性质
查看>>
配置设置[Django]引入模版之后报错Requested setting TEMPLATE_DEBUG, but settings are not configured....
查看>>
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
代码描述10313 - Pay the Price
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
vb sendmessage 详解1
查看>>
jquery用法大全
查看>>
Groonga 3.0.8 发布,全文搜索引擎
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>