错误处理:

local function add(a,b)
assert(type(a) == "number", "a 不是一个数字")
assert(type(b) == "number", "b 不是一个数字")
return a+b
end
add() #如果正确执行,不做任何操作,否则第二个参数当做错误信息。

assert

error (message [, level])

终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回)
通常情况下,error会附加一些错误位置的信息到message头部。
Level参数指示获得错误的位置:
Level=[默认]:为调用error位置(文件+行号)
Level=:指出哪个调用error的函数的函数
Level=:不添加错误位置信息

error

数据库访问:

LuaSQL。他是开源的,支持的数据库有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。
可以使用luarocks安装库
luarocks install luasql-sqlite3
luarocks install luasql-postgres
luarocks install luasql-mysql
luarocks install luasql-sqlite
luarocks install luasql-odbc
_______________________________________________
require "luasql.mysql" --创建环境对象
env = luasql.mysql() --连接数据库
conn = env:connect("数据库名","用户名","密码","IP地址",端口) --设置数据库的编码格式
conn:execute"SET NAMES UTF8" --执行数据库操作
cur = conn:execute("select * from role") row = cur:fetch({},"a") --文件对象的创建
file = io.open("role.txt","w+"); while row do
var = string.format("%d %s\n", row.id, row.name) print(var) file:write(var) row = cur:fetch(row,"a")
end file:close() --关闭文件对象
conn:close() --关闭数据库连接
env:close() --关闭数据库环境

面向对象:

lua中对象就是table

Role = { hp =  }
function Role.addHp(hp)
Role.hp = Role.hp + hp
end Role.addHp()
print(Role.hp)

类:

Lua 没有类的概念,不过可以通过元表(metatable)来实现与原型 prototype 类似的功能,而 prototype 与类的工作机制一样,都是定义了特定对象行为。Lua 里的原型特性主要使用元表的 __index 事件来实现,这样当调用对象没定义的方法时,会向其元表的 __index 键(事件)查找。

Role = { hp =  }
function Role:new(o)
o = o or {}
setmetatable(o, self)
self.__index = self
self.aaa='safasdf'
return o
end
function Role:addHp(hp)
self.hp = self.hp + hp
end r = Role:new()
for i ,j in pairs(r)
do
print(i,j..'aaa')
print()
end
r:addHp()
print(r.hp)
print(r.aaa)

可以理解为new是类

继承同理,写个函数,定义当前的表的元表是父类(也是表),执行这个方法相当于实例化对象(返回一个表)。

防sql注入:

--防止sql注入
local ch_param = ngx.req.get_uri_args()["ch"] or ''
--使用ngx.quote_sql_str防止sql注入
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

lua基础(2)的更多相关文章

  1. Lua 基础

    Lua 5.3 的中文手册, http://cloudwu.github.io/lua53doc 在线浏览 --第一部分 -- 两个横线开始单行的注释 --[[ 加上两个[和]表示 多行的注释. -- ...

  2. Lua基础 函数(一)

    转自: http://blog.csdn.net/wzzfeitian/article/details/8653101 在Lua中,函数是对语句和表达式进行抽象的主要方法.既可以用来处理一些特殊的工作 ...

  3. Lua基础之MetaTable(6)

    Lua基础之MetaTable(6) 转载地址:http://nova-fusion.com/2011/06/30/lua-metatables-tutorial/ 关于MetaTable的补充:ht ...

  4. Step By Step(Lua基础知识)

    Step By Step(Lua基础知识) 一.基础知识:    1. 第一个程序和函数:    在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如:    /> l ...

  5. lua基础(一)

    参考链接: http://blog.csdn.net/lyh916/article/details/49719697 一.注释 --这是行注释 --[[ 这是块注释 这是块注释 这是块注释 --]] ...

  6. lua 基础 2 类型和值

    -- 类型 和 值--[[ 8中类型 滚动类nil.boolean. number.string.userdata.function.thread 和 table.]] print (type(&qu ...

  7. lua 基础 1

    --1.1 Chunks--[[Chunk 是一系列语句,Lua 执行的每一块语句,比如一个文件或者交互模式下的每一行都是一个 Chunk.]] -- 1.2 全局变量--[[ 全局变量不需要声明,给 ...

  8. Lua学习----Lua基础数据类型

    前言 Lua有6中数据类型,分别是nil(空).boolean(布尔).number(数字).string(字符).table(表).function(函数) 在Lua中可以使用type函数来返回一个 ...

  9. Lua基础

    局部定义与代码块: 使用local声明一个局部变量或局部函数,局部对象只在被声明的那个代码块中有效. 代码块:一个控制结构.一个函数体.一个chunk(一个文件或文本串)(Lua把chunk当做函数处 ...

  10. Lua基础之字符串(string)

    1,计算字符串长度 2,返回字符串s的n个拷贝 3,返回字符串全部字母大写 4,返回字符串全部字母小写 5,返回一个类似printf的格式化字符串 6,根据下标截取字符串 7,在字符串中查找 8,在字 ...

随机推荐

  1. leetcode 115不同的子序列

    滚动数组: /***** 下标从1开始 dp[i][j]:= numbers of subseq of S[1:j] equals T[1:i] if(s[j]==t[i]):(那么之后的子串可以是是 ...

  2. 使用ajax获取servelt数据乱码

    修改tomcat编码 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout=" ...

  3. android中如何自动获取短信验证码

    package com.loaderman.smsbroadcastreceiver; import java.util.regex.Matcher; import java.util.regex.P ...

  4. Java List集合 遍历 四种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.ArrayList; import java.util.List; /** * @A ...

  5. python操作oracl数据库

    #查询交易系统数据,判断当日是否有港股交易 import cx_Oracleimport os conn = Nonecursor = None hkfile = 'hk.txt'nohkfile = ...

  6. html+css实现奥运五环(环环相扣)

    <!DOCTYPE html> <html> <head> <title>奥运五环</title> <style type=" ...

  7. 【HTTP】三、HTTP状态保持机制(Cookie和Session)

      前面我们提到HTTP协议的特点:无连接.无状态.无连接带来的时间开销随着HTTP/1.1引入了持久连接的机制得到了解决.现在来关注其"无状态"的特点.   所谓的无状态,就是指 ...

  8. [Vuejs] 在vue各个组件中应用全局scss变量

    需要安装一个插件:sass-resources-loader 1.执行安装命令: npm i sass-resources-loader --save-dev 2.修改vue-cli环境下build文 ...

  9. Layer 弹出层抖动问题

    layer.open({        type: 2,        anim: 5,//加上anim,渐显        title: '品牌列表',        shadeClose: fal ...

  10. centos没有ifcfg-eth0或者ifcfg-eth0文件内容为空

    虚拟机安装好CentOS 6系统后,发现ip在每次重启后都会还原,用ifconfig查看是有eth0网卡的(也有可能只有回环网卡lo),于是查看eth0网卡配置文件,发现在 /etc/sysconfi ...