openresty json mysql_openresty 前端开发入门五之Mysql篇
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篇相关推荐
- openresty 前端开发入门五之Mysql篇
2019独角兽企业重金招聘Python工程师标准>>> openresty 前端开发入门五之Mysql篇 这章主要演示怎么通过lua连接mysql,并根据用户输入的name从mysq ...
- 前端开发入门就这一篇文章
本文涉及最最基础的HTML+CSS 1.HTML是什么鬼? 大白话:就是用成对尖括号(类似:<元素></元素>) 表示内容结构的一组方法,就是搭一个骨架,骨架(元素)中才放入各 ...
- openresty 前端开发入门四之Redis篇
2019独角兽企业重金招聘Python工程师标准>>> 这章主要演示怎么通过lua连接redis,并根据用户输入的key从redis获取value,并返回给用户 操作redis主要用 ...
- web前端开发入门学习线路图详解-2019升级版
现如今,Web前端工程师已经成为各大互联网公司不可或缺的热门职位,从业者队伍日渐庞大,这其中不乏零基础学习者和转行人士.为了方便大家系统而全面的掌握前端基础知识,千锋小编特意整理了web前端开发入门学 ...
- Web前端开发入门之网页制作三要素!
Web前端开发是由网页制作演变而来的,主要由HTML.CSS.JavaScript三大要素组成.专业的Web前端开发入门知识也一定会包含这些内容,今天小千就给大家简单介绍一下. HTML,超文本标记语 ...
- Web前端html5+css3前端开发入门学习笔记
文章目录 前言 HTML 认识HTML 1. 网页组成和本质 2.了解浏览器 3.web标准 4.HTML感知 5.HTML骨架 6.编译软件vscode的简介和使用 7.注释 8.标签组成和关系 9 ...
- 支付宝前端推出《Web前端开发入门手册》
web前端教程 用大白话,来讲编程 近日,支付宝前端团队写的<Web前端开发入门手册>对外公开了,原本是用于内部培训使用,现在对外公开了. 这本手册是初学者的福音,它的受众群体是前端小白, ...
- Web前端开发入门学习分享
Web前端开发入门学习分享 1:如何开始学习Web前端 首先你需要学习html的各个标签,掌握其用法和规范,明白其作用. 开始学习css的使用,你先学习在html页面中为标签增加css样式,其次是将c ...
- web前端开发入门(一)
web前端开发入门(一) 前端开发入门 HTML/CSS/JavaScript JavaScript 总结 思考和实践 前端开发入门 首先必须掌握 HTML/CSS/JavaScript 这三大基础技 ...
最新文章
- 自定义控件--基础2
- Python爬虫案例-获取最新的中国行政区域划分
- 在某游戏公司面试游戏运营的感受
- webpack 阅读笔记
- html表格在页面间距,在CSS中设置单元格和单元格间距?
- puppet php,puppet入门实践
- seqkit根据基因id_基因家族成员的鉴定/基因在染色体上的位置
- Slat撒盐加密原理
- 屠龙之技 作者:长铗
- c# https请求忽略证书验证_C# httpwebrequest访问HTTPS错误处理方法
- Unix/BSD/Linux的口令机制初探(转)
- 911报警电话数据分析
- Java---设计【运动会成绩管理系统】
- 写博客能月入10K?
- 【flutter 起步走】Flutter 布局解决消消乐,谁说只会写写布局不能做游戏?
- Thread.sleep(0)到底是个什么骚操作?
- 基于控制台的c语言游戏常用操作
- bt种子自动发布 linux,Linux制作BT种子并获取BT种子信息
- 从身份证芯片的“秘密”谈谈网络信息搜索
- NoteExpress 报错该属性无法用于那个对象 (已解决)
热门文章
- 一起谈.NET技术,Silverlight 应用整合
- ros云服务器_减少运维工作量,如何通过 ROS 轻松实现资源编排新方式
- SCCM Learning2
- weblogic-开发模式转变为生产模式生产模式转变为开发模式
- 用node.js给图片加水印
- CodeForces 592C The Big Race
- 由“美图秀秀”软件的网站,看网站的生存模式
- php会话控制区别和流程,PHP会话控制:cookie和session区别与用法深入理解_后端开发...
- 微型计算机接口部件的结构,微机接口课后习题解析.doc
- COM.MYSQL.JDBC.DRIVER 和 COM.MYSQL.CJ.JDBC.DRIVER的区别