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 ではなく update ステートメントに execute を使用します。

于 2012-12-27T09:45:40.187 に答える