将tclodbc与包含77777的revnum变量一起使用时,以下语句将获得错误“ERROR: invalid input syntax for integer: "$revnum"”
$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');} 但这句话是有效的:
$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的值不能插入数据库?
发布于 2012-02-17 15:29:53
mu太短了,给出了正确的答案:解决方案是在尝试向数据库中插入一些东西之前,了解Tcl中字符的works是如何grouping的。
但请注意,您的代码本质上是有缺陷的,因为您没有使用旁路查询,这是每个明智的程序员在以编程方式查询数据库时都应该使用的。阅读statement手册中关于数据库对象的tclodbc子命令的内容。基本上你应该这样做:
$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的值,而不管这些值来自何处以及包含什么内容。
https://stackoverflow.com/questions/9323741
复制相似问题