不能识别邮箱中的特殊字符

不能识别邮箱中的特殊字符

http://img1.sycdn.imooc.com//climg/5f606c3c092663bd16610634.jpg

http://img1.sycdn.imooc.com//climg/5f606c3c099c9baf13270689.jpg

我把老师的稍微改了一下,改成:在界面中修改用户几项信息时,按Y就修改,N就跳过,修改后的信息以

列名:修改值 作为一个键值对保存在字典中,然后在userdao里面解压出来,以for循环和字符串拼接成一个sql语句,这样让管理员可以选择性修改对应用户的信息

但是我发现如果email对应的键没有@的话就可以更新成功,但是如果有@就不行,可这一串邮箱名不已经时字符串了吗,我把拼接后的sql语句拿去nativecat里,只需要在邮箱名上加上引号就可以运行,但是为什么在pycharm上执行就不可以呢

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小猿 2020-09-15 18:33:55

同学你好,同学输出的是字符串类型的,但是输出结果email=123@163.com,如下图

http://img1.sycdn.imooc.com//climg/5f60966809d1b7a216430060.jpg
把截图的这条sql 语句放在数据库中执行也是报错的,必须是email="123@163.com"  加上引号,才可以运行成功,也就是说当字符串占位传参数时,转换为sql字符串后,电脑不会识别sql中哪些是字符串该加引号,不会自动给加引号,即email="123@163.com"的区域
所以在占位时先添加上引号
http://img1.sycdn.imooc.com//climg/5f60995c0994c4c013270387.jpg
祝学习愉快~

好帮手慕小猿 2020-09-15 17:05:29

同学你好,同学插入失败是因为插入sql 语句时email=123456@163.com,不是字符串类型的http://img1.sycdn.imooc.com//climg/5f6082a509cd0a5716520138.jpg
要把email值改为字符串,同学可以使用%s占位,占位时使用‘%s’值变为字符串,如图
http://img1.sycdn.imooc.com//climg/5f6083f409978eef13270381.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 反冲斗士 #1
    为什么邮箱不是字符串类型呢,我都是用input输入的,而且我在拼接sql语句的时候用的format不是格式化了吗,我最终打印整个完整的sql语句也是str类型啊
    2020-09-15 18:16:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师