Lua string.format转义

时间:2016-02-29 16:36:00

标签: mysql lua

我想逃避例如lua中的单引号:

我的脚本到目前为止使用sqlite获取mysql表的一些数据:

local sqlCmd = string.format([[INSERT INTO temp_storage
SET     gID = '%s'
]], gID)

问题是gID也可以包含单引号'但是sql语句包含错误。

如何防止这种情况?我并不是真的在寻找一种搜索和替换的方法 - 更多的是替换内置函数,以便sql仍然有效。

1 个答案:

答案 0 :(得分:2)

我们缺少一些关于如何在sqlite3 db上执行查询的信息,您使用哪个库?

其次,连接字符串'是不安全的。将在db上执行,这可能会导致sql_injection。 这样做的安全方法是绑定参数,并告诉他们。数据库将输入视为param ,与之前的方式相反。

来自我为此目的所知的库,LuaSQLite3将完成这项工作(在代码中表示为" lsqlite3"。)

您使用的基本API是:

local sqlite3 = require("lsqlite3")
local db = sqlite3.open_memory()

gID = 6

local insert_stmt = assert( db:prepare("INSERT INTO temp_storage SET gID = ?") )
insert_stmt:bind_values(gID)
insert_stmt:step()
insert_stmt:reset()

我修改了其中一个官方示例(" statement.lua")。