openresty 前端开发入门五之Mysql篇

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

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

而且上面也有实例代码

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

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 db

end

function 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)

end

return _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"

end

name = ngx.quote_sql_str(name) -- SQL 转义,将 ' 转成 \', 防SQL注入,并且转义后的变量包含了引号,所以可以直接当成条件值使用

local db = mysql:new()

local sql = "select * from user where User = " .. name

ngx.say(sql)

ngx.say("
")

local res, err, errno, sqlstate = db:query(sql)

db:close()

if not res then

ngx.say(err)

return {}

end

ngx.say(cjson.encode(res))

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

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

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

示例代码 参见demo5部分

openresty json mysql_openresty 前端开发入门五之Mysql篇相关推荐

  1. openresty 前端开发入门五之Mysql篇

    2019独角兽企业重金招聘Python工程师标准>>> openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysq ...

  2. 前端开发入门就这一篇文章

    本文涉及最最基础的HTML+CSS 1.HTML是什么鬼? 大白话:就是用成对尖括号(类似:<元素></元素>) 表示内容结构的一组方法,就是搭一个骨架,骨架(元素)中才放入各 ...

  3. openresty 前端开发入门四之Redis篇

    2019独角兽企业重金招聘Python工程师标准>>> 这章主要演示怎么通过lua连接redis,并根据用户输入的key从redis获取value,并返回给用户 操作redis主要用 ...

  4. web前端开发入门学习线路图详解-2019升级版

    现如今,Web前端工程师已经成为各大互联网公司不可或缺的热门职位,从业者队伍日渐庞大,这其中不乏零基础学习者和转行人士.为了方便大家系统而全面的掌握前端基础知识,千锋小编特意整理了web前端开发入门学 ...

  5. Web前端开发入门之网页制作三要素!

    Web前端开发是由网页制作演变而来的,主要由HTML.CSS.JavaScript三大要素组成.专业的Web前端开发入门知识也一定会包含这些内容,今天小千就给大家简单介绍一下. HTML,超文本标记语 ...

  6. Web前端html5+css3前端开发入门学习笔记

    文章目录 前言 HTML 认识HTML 1. 网页组成和本质 2.了解浏览器 3.web标准 4.HTML感知 5.HTML骨架 6.编译软件vscode的简介和使用 7.注释 8.标签组成和关系 9 ...

  7. 支付宝前端推出《Web前端开发入门手册》

    web前端教程 用大白话,来讲编程 近日,支付宝前端团队写的<Web前端开发入门手册>对外公开了,原本是用于内部培训使用,现在对外公开了. 这本手册是初学者的福音,它的受众群体是前端小白, ...

  8. Web前端开发入门学习分享

    Web前端开发入门学习分享 1:如何开始学习Web前端 首先你需要学习html的各个标签,掌握其用法和规范,明白其作用. 开始学习css的使用,你先学习在html页面中为标签增加css样式,其次是将c ...

  9. web前端开发入门(一)

    web前端开发入门(一) 前端开发入门 HTML/CSS/JavaScript JavaScript 总结 思考和实践 前端开发入门 首先必须掌握 HTML/CSS/JavaScript 这三大基础技 ...

最新文章

  1. 自定义控件--基础2
  2. Python爬虫案例-获取最新的中国行政区域划分
  3. 在某游戏公司面试游戏运营的感受
  4. webpack 阅读笔记
  5. html表格在页面间距,在CSS中设置单元格和单元格间距?
  6. puppet php,puppet入门实践
  7. seqkit根据基因id_基因家族成员的鉴定/基因在染色体上的位置
  8. Slat撒盐加密原理
  9. 屠龙之技 作者:长铗
  10. c# https请求忽略证书验证_C# httpwebrequest访问HTTPS错误处理方法
  11. Unix/BSD/Linux的口令机制初探(转)
  12. 911报警电话数据分析
  13. Java---设计【运动会成绩管理系统】
  14. 写博客能月入10K?
  15. 【flutter 起步走】Flutter 布局解决消消乐,谁说只会写写布局不能做游戏?
  16. Thread.sleep(0)到底是个什么骚操作?
  17. 基于控制台的c语言游戏常用操作
  18. bt种子自动发布 linux,Linux制作BT种子并获取BT种子信息
  19. 从身份证芯片的“秘密”谈谈网络信息搜索
  20. NoteExpress 报错该属性无法用于那个对象 (已解决)

热门文章

  1. 一起谈.NET技术,Silverlight 应用整合
  2. ros云服务器_减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
  3. SCCM Learning2
  4. weblogic-开发模式转变为生产模式生产模式转变为开发模式
  5. 用node.js给图片加水印
  6. CodeForces 592C The Big Race
  7. 由“美图秀秀”软件的网站,看网站的生存模式
  8. php会话控制区别和流程,PHP会话控制:cookie和session区别与用法深入理解_后端开发...
  9. 微型计算机接口部件的结构,微机接口课后习题解析.doc
  10. COM.MYSQL.JDBC.DRIVER 和 COM.MYSQL.CJ.JDBC.DRIVER的区别