問題は次のとおりです。更新コマンドに { } を使用すると、次のようになります。
package require sqlite3
fileRepo eval {UPDATE uploads SET $col=$data WHERE rowid=$id}
中括弧内の変数を置き換えることはできません。すべてハードコーディングする必要があります。
ただし、次のように update コマンドに " " を使用すると、次のようになります。
fileRepo eval "UPDATE uploads SET $col='$data' WHERE rowid=$id"
二重引用符内の変数を置き換えることはできますが、SQL が 1 つの入力として認識するように、スペースを含むデータを入れるには ' ' を使用する必要があります。そうしないと、次のようなものを送信するとエラーが発生します
$data = "正当なスタック"
スペースがあるため、単一引用符で囲まれていない限り、SQL は次の単語を詰まらせます: Stack
したがって...
このデータを update コマンドに送信すると、次のようになります。
$col = description
$data = "Stack's Pet"
次のエラーが表示されます。
"s" の近く: "fileRepo eval "UPDATE uploads SET $col='$data' WHERE rowid=$id" の実行中に構文エラーが発生しました ...
したがって、これらのルールを考えると、一重引用符またはアポストロフィを更新コマンドに正常に渡す方法がわかりません。これを行う別の方法はありますか?
ありがとう!