使用LuaSQL为Lua准备语句

在luaSQL中关于prepared statements的文档很少。所以我尝试编写一些代码来使用LuaSQL的prepared statements。不幸的是,它不起作用。(我正在使用mysql数据库)

luasql = require "luasql.mysql"
env = assert (luasql.mysql())
con = assert (env:connect("database","user","password","localhost"))
name = "insert_sql_injection_code_here"
query= "INSERT INTO `table`(`text`) VALUES ('"..name.."')"
cur = assert (con:execute(query))
-- 如您所见,query容易受SQL注入攻击。修复方法: 使用prepared statements:
smtp = assert(con:prepare("insert into settings (text) values(:p_name)"))
con:bind_names({p_name=name})
cur = assert (con:execute())

输出:

lua: test.lua:8: attempt to call method 'prepare' (a nil value)

有没有人有关于LuaSQL中prepared statements的工作示例?

点赞