1 zyftank OP 还有种办法也能正常实现,就是改 sql 语句。 sql = "insert into table_name(cl1,cl2) value('"+arg1+"','"+arg2+"')" |
![]() | 2 iyaozhen 2020-10-19 13:12:44 +08:00 正常 sql 里面,插入字符串需要单引号 '' cur.execute(sql,[arg1,arg2]) 这样可以是因为做了参数绑定 |
3 zyftank OP 搞了半天,还是数据类型的问题,在写 sql 语句之前,已经进行了类型转换、调试打印,测试类型。就是没有打印 sql 语句,其实打印一下 sql 语句,问题就会明白了,其实还可以这样改。 sql ="insert table_name(cl1,cl2) value('%s','%s')" %(arg1,arg2) |
![]() | 4 est 2020-10-19 13:33:38 +08:00 ![]() 大体是上是这么实现的,也能插入数据,可是 arg1 这个数据插入后,不是‘2012-01-15'这个值,而是一个其他的年份,确实令人费解。 这不费解啊。。values (2012-01-15, 1) 等于 values (1996, 1) 啊。 因为 2012-01-15 == 1996 |
![]() | 5 raymanr 2020-10-19 13:35:32 +08:00 ![]() cur.execute(sql,[arg1,arg2]) 多使用这种方法好点, 拼接 sql 会导致注入问题, 就算是自己使用, 也不能很好的处理带有 \ ' 等字符的数值 |
6 zhangysh1995 2020-10-19 13:40:13 +08:00 |
![]() | 7 9LCRwvU14033RHJo 2020-10-19 16:23:09 +08:00 @est 哈哈,原来是一个算式 |
![]() | 8 LGA1150 2020-10-19 16:34:47 +08:00 尽量使用参数化查询,不要手动拼接,如果 arg2 是 '1); DROP TABLE table_name; --' 就出大问题了 |
![]() | 9 hhyvs111 2020-10-20 10:13:23 +08:00 兄弟怕是大学生吧,这么容易 sql 注入的代码都写得出来 |