3

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

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

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

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

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

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

local bloom = 0
4

2 回答 2

3

使用占位符,因为您应该使用基于用户输入的任何查询来避免将数据作为命令传递(也称为 SQL 注入)。

local stmt = db:prepare[[
  UPDATE test SET bloom = ? WHERE bloom = ?
]]
stmt:bind(new_bloom, previous_bloom)
stmt:exec()
于 2012-12-27T14:03:21.607 回答
0

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

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

我通常使用执行更新语句而不是 nrows。

于 2012-12-27T09:45:40.187 回答