【发布时间】:2016-02-03 21:26:22
【问题描述】:
问题是:如果我像这样使用 { } 作为更新命令:
package require sqlite3
fileRepo eval {UPDATE uploads SET $col=$data WHERE rowid=$id}
我不能替换大括号内的任何变量。这一切都必须进行硬编码。
但是,如果我像这样使用“”作为更新命令:
fileRepo eval "UPDATE uploads SET $col='$data' WHERE rowid=$id"
我可以替换双引号内的变量,但我必须使用 ' ' 来输入带空格的数据,以便 sql 将其视为一个输入。如果我不发送类似
的内容,则会收到错误消息$data = "合法堆栈"
因为它有一个空格,所以 sql 会卡在这个词上:Stack 除非它放在单引号内
所以……
如果我将此数据发送到更新命令:
$col = description
$data = "Stack's Pet"
我收到以下错误:
“s”附近:执行“fileRepo eval”UPDATE 上传时出现语法错误 SET $col='$data' WHERE rowid=$id" ...
因此,鉴于这些规则,我看不出有办法成功地将单引号或撇号传递给更新命令。有不同的方法可以做到这一点吗?
谢谢!
【问题讨论】:
标签: sql sqlite tcl variable-substitution