Lua string.format 转义字符

我想在 Lua 中转义单引号字符:

我使用 sqlite 来获取 mysql 表中的一些数据:

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

问题在于 gID 可能包含单引号 ',然后 sql 语句就会出现错误。

如何解决这个问题?我并不是在找一种搜索和替换的方式,我希望有一种内置函数可以进行替换,使得 sql 语句仍然有效。

点赞
用户9608077
用户9608077

我们对于您如何在sqlite3数据库上执行查询以及使用的库缺少一些信息。

其次,连接“字符串”并在数据库上执行,这是不安全的,这可能会导致SQL注入。安全的方法是绑定参数,将输入视为参数仅限,而不是以前的方法。

从我所知的用于此目的的库中,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”)。

2016-03-01 00:43:28