公司項(xiàng)目用的原生php 封裝的mysql php類, 上線已很久, 今天排查一個(gè)錯(cuò)誤的時(shí)候驚現(xiàn)一個(gè)奇怪的現(xiàn)象, 讓人萬(wàn)分驚恐:查詢 sql: select count(1) as total from tabname where 1=1 and connuid='9E74674'此sql語(yǔ)句交由mysql query(sql)查詢。 connuid varchar(40)報(bào)錯(cuò): Illegal double '9E74674' value found during parsing。疑問(wèn):sql語(yǔ)句已經(jīng)對(duì)查詢字符串加了引號(hào)處理,為啥還會(huì)被自動(dòng)轉(zhuǎn)換成hex進(jìn)制了呢?該如何處理呢?
2 回答

拉風(fēng)的咖菲貓
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
測(cè)試了一下,sql 語(yǔ)句中 9E74674 外不帶引號(hào),才會(huì)報(bào)這個(gè)解析錯(cuò)誤。
64位系統(tǒng) mysql double 最大值好像是1.7e308
不加引號(hào),mysql 把這個(gè) 9E74674 當(dāng)成科學(xué)計(jì)數(shù)法了,想解析成 double,結(jié)果超出范圍了。
我分析是這么回事~

三國(guó)紛爭(zhēng)
TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
測(cè)試沒(méi)發(fā)現(xiàn)會(huì)轉(zhuǎn)成小數(shù),
show variables like 'general_log%';
set global general_log = 'ON';
觀察變量general_log_file表示的文件, 看實(shí)際執(zhí)行的sql代碼.
添加回答
舉報(bào)
0/150
提交
取消