首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用tclodbc将变量值插入数据库

使用tclodbc将变量值插入数据库
EN

Stack Overflow用户
提问于 2012-02-17 14:14:46
回答 1查看 269关注 0票数 1

将tclodbc与包含77777revnum变量一起使用时,以下语句将获得错误“ERROR: invalid input syntax for integer: "$revnum"

代码语言:javascript
复制
$db {insert into (revnum,risetime,settime,sat,passlen,riseges,setges,elevation)
    values('$revnum','1111-11-1111:11:11:11','1111-11-1111:11:11','C4','24','QQ','QQ','22');}    

但这句话是有效的:

代码语言:javascript
复制
$db {insert into (revnum,risetime,settime,sat,passlen,riseges,setges,elevation)
    values('77777','1111-11-11 :11','1111-11-1111:11:11','C4','24','QQ','QQ','22');} 

为什么变量revnum的值不能插入数据库?

EN

回答 1

Stack Overflow用户

发布于 2012-02-17 15:29:53

mu太短了,给出了正确的答案:解决方案是在尝试向数据库中插入一些东西之前,了解Tcl中字符的works是如何grouping的。

但请注意,您的代码本质上是有缺陷的,因为您没有使用旁路查询,这是每个明智的程序员在以编程方式查询数据库时都应该使用的。阅读statement手册中关于数据库对象的tclodbc子命令的内容。基本上你应该这样做:

代码语言:javascript
复制
$db statement ins {insert into (revnum, risetime, settime, sat,
                                passlen, riseges, setges, elevation)
                   values (?, ?, ?, ?, ?, ?, ?, ?)}
$ins $revnum 1111-11-1111:11:11:11 C4 24 QQ QQ 22

这样,ODBC后端驱动程序就可以正确地转义所有阻止SQL injection的值,而不管这些值来自何处以及包含什么内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9323741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档