Lua SQLite3 更新值

我是新来的,所以首先想说你好。

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

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

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

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

我想允许用户更改该值。但我应该如何做到这一点? 我已经为此设置了一个占位符,即

local bloom = 0
点赞
用户438753
用户438753

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

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

通常我会使用 execute 来执行更新语句而不是 nrows

2012-12-27 09:45:40
用户936986
用户936986

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

local stmt = db:prepare[[
  UPDATE test SET bloom = ? WHERE bloom = ?
]]
stmt:bind(new_bloom, previous_bloom)
stmt:exec()
2012-12-27 14:03:21