Lua SQLite3更新值

时间:2012-12-26 23:17:27

标签: sqlite lua

我是新来的,所以我首先想打个招呼。

我的问题是我正在Lua中开发游戏,当我想更新数据库中的值时,需要动态(由用户)完成。例如。

当数据库中的值等于1时,用户可能希望将其更改为0(当他将bloom设置为关闭时)。

我可以使用以下方法进行硬编码:

for test in db:nrows("UPDATE test SET bloom = 1 WHERE bloom = 0") do

我想允许用户更改该值。但是我怎么能这样做呢? 我已经有了一个占位符

local bloom = 0

2 个答案:

答案 0 :(得分:3)

使用占位符,就像根据用户输入的任何查询一样,以避免将数据作为命令传递(也就是SQL注入)。

local stmt = db:prepare[[
  UPDATE test SET bloom = ? WHERE bloom = ?
]]
stmt:bind(new_bloom, previous_bloom)
stmt:exec()

答案 1 :(得分:0)

我假设您知道如何从用户捕获程序中的值,然后可以动态构建一个字符串以传递给SQL,例如

local sql = string.format([["UPDATE test SET bloom = 1 WHERE bloom = %s"]],bloom)
local res = assert(db:execute(sql))

我通常使用execute for update语句而不是nrows。

相关问题