为了账号安全,请及时绑定邮箱和手机立即绑定

Mysql字符串被当成十六进制怎么处理?

Mysql字符串被当成十六进制怎么处理?

紫衣仙女 2019-02-14 21:11:17
公司项目用的原生php 封装的mysql php类, 上线已很久, 今天排查一个错误的时候惊现一个奇怪的现象, 让人万分惊恐:查询 sql: select count(1) as total from tabname where 1=1 and connuid='9E74674'此sql语句交由mysql query(sql)查询。 connuid varchar(40)报错: Illegal double '9E74674' value found during parsing。疑问:sql语句已经对查询字符串加了引号处理,为啥还会被自动转换成hex进制了呢?该如何处理呢?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

测试了一下,sql 语句中 9E74674 外不带引号,才会报这个解析错误。

64位系统 mysql double 最大值好像是1.7e308

不加引号,mysql 把这个 9E74674 当成科学计数法了,想解析成 double,结果超出范围了。

我分析是这么回事~


查看完整回答
反对 回复 2019-03-13
?
三国纷争

TA贡献1804条经验 获得超7个赞

测试没发现会转成小数,

show variables like 'general_log%';

set global general_log = 'ON';

观察变量general_log_file表示的文件, 看实际执行的sql代码.


查看完整回答
反对 回复 2019-03-13
  • 2 回答
  • 0 关注
  • 1790 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信