溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中字段數(shù)據(jù)超過4113字符后的數(shù)據(jù)異常問題解決

發(fā)布時間:2020-08-05 04:48:56 來源:ITPUB博客 閱讀:237 作者:yanhengdoudou 欄目:數(shù)據(jù)庫

   

環(huán)境信息:

操作系統(tǒng):LNMP1.6

PHP 版本:5.3.29(NTS)

達夢客戶端版本:DM_V7.6.0.161客戶端

PHP 模塊:libphp53_dm.so

PHP 配置

extension_dir = "/usr/local/php/lib/php/extensions/"

extension=libphp53_dm.so

[dm]

; 是否允許持久性連接

dm.allow_persistent = 1

; 允許建立持久性連接的最大數(shù). -1 為沒有限制.

dm.max_persistent = -1

; 允許建立連接的最大數(shù)(包括持久性連接). -1 為沒有限制.

dm.max_links = -1

; 默認的主庫地址

dm.default_host = 192.168.100.2

; 默認的連接用戶名

dm.default_user = SYSDBA

; 默認的連接口令.

dm.default_pw = SYSDBA

; 連接超時,這個參數(shù)未實際的用到,等待服務(wù)器支持

dm.connect_timeout = 10

; 對于各種變長數(shù)據(jù)類型,每列最大讀取的字節(jié)數(shù)。如果它設(shè)置為0或是小于0,那么,讀取變長字段時,將顯示NULL值

;dm.defaultlrl = 4096

; 是否讀取二進制類型數(shù)據(jù),如果它設(shè)置為0,那么二進制將被NULL值代替

dm.defaultbinmode = 1

; 是否允許檢察持久性連接的有效性,如果設(shè)置為ON,那么當重用一個持久性連接時,會檢察該連接是否還有效

dm.check_persistent = ON

; 連接的端口號

dm.port = 5236

現(xiàn)象說明

PHP 在使用DM的PDO模塊讀取TEXT字段數(shù)據(jù)時出現(xiàn)下面情況

1. 當數(shù)據(jù)有4113字符時顯示正常;

2. 當數(shù)據(jù)有4114-4116個時,只會顯示到第4113字符;

3. 當數(shù)據(jù)超過4116個時第4113后的字符將出現(xiàn)異常,之后的數(shù)據(jù)與原數(shù)據(jù)不符;

測試過程

1. 創(chuàng)建一張表

CREATE TABLE "SYSDBA"."TEXT_TEST"(T_ID INT,T_TEXT TEXT);

2. 插入測試數(shù)據(jù)

- 數(shù)據(jù)6,TEXT_TEST字段數(shù)據(jù)共4200個字符

insert into "SYSDBA"."TEXT_TEST" (T_ID,T_TEXT) values (4200, 'liuyongjian,ylwenwen,ylcaiwf,ylchenj,ylliangn,ylhuangzh,yllinxu,ylsuls,ylhec,yzwenzx,yzdengl,ylhehq,ylligp,yljiangjy,liangjingmin,maiyixin,yllinlu,ylpub,ylliw,ylzhouxiong,ylchenz,ylzhailing,ylwangs,ylchenzs,yzlihs,wenwu,caoxiaoqun,ylchenxb,chenyan,ylhuangzf,ylliangyi,ylhuanghui,ylliyh,ylguanwz,ylwujian,ylbgs,ylsujm,ylyuandr,ylliny,yljiangys,ylchenx,ylchengq,ylyangz,ylsuw,ylyuh,ylchenyj,ylwangsq,ylyaozd,ylluob,ylzhonggx,ylhuangtj,ylhelj,ylningyl,ylmingmt,ylyanggy,ylzhuyuchong,ylzhonggui,yllinyongyi,ylpengjq,ylsucx,ylchenyt,ylfangx,yllugs,yltanqq,yllill,ylpcj,ylliuqs,ylyangtl,ylpangbs,ylluos,yllvhh,ylliangj,ylliangf,ylouyzx,ylchendw,yljiangsd,ylzhengyb,yllixiaoli,yzlinys,blzhoudm,ylsuyu,xutr,ylhehuan,ylmasy,bblixyu,rxyangqj,ylyincong,ylqiupc,yllulijuan,ylhuangyy,ylhuangby,yldengcx,ylchentt,ylchenchi,ylchenyp,ylliangyu,ylchensh,ylchenm,ylhuangbc,yllib,ylchenmx,blganwq,ylzoulj,rxliun,luoxk,ylzhangxy,ylgey,yllimengKA0,yllianghy,yllihb,ylwuqiuling,ylliaohuiyan,ylweizr,ylliangkl,yltanz,ylluogs,ylchenfz,ylzhongx,ylpanbf,yljiangh,ylliyanz,ylzhangln,ylweiyx,ylchengy,ylweiyanran,ylchenglf,ylweilan,ylchenwj,ylpangz,ylcaiw,ylliangwq,yllinhq,bbchengj,bllvb,ylyangx,ylliqin,ylningting,yzliangxz,ylqiuzhan,ylchenww,ylchenhua,ylhuangh,ylpangly,ylchenxiaogang,bllim,ylluyn,ylzhousw,ylliuwy,ylhuanggs,ylliyz,ylleitm,ylzhangjg,yllust,ylhuanghq,ylluocs,ylheh,ylzhangnw,ylxumy,ylchenjs,yllianghui,ylzhangyz,ylzhongr,ylliangbi,ylsuxm,ylzhouhq,ylcaidy,ylyangqm,ylliyl,blzhongp,bbchenwn,ylyllijl,yllinjx,yllijy,ylchenchu,ylhuangsw,ylxuelf,ylyangzs,ylyaol,ylmoting,ylxieshuqiu,yltuhuan,ylliangp,ylhuangfy,yllixy,ylzhongbb,rxhuangjie,ylzhangwl,blqinhj,ylnixiangqin,ylhunagj,ylpangm,yllinzj,ylfengsq,ylliangyy,ylmohc,ylyedm,ylfancl,ylqinzy,ylzhangxg,ylhuangg,ylgaotm,ylchenyc,ylliangh,ylchenyu,bbpangan,ylhuangxm,ylzhouhb,ylyangyz,yllizf,ylylhuangjy,ylwenyy,yllinj,ylliangb,yljiangsl,ylwenfj,ylchenq,ylwuc,yllizq,ylliugb,ylsudb,yllinly,ylguangw,yllianghc,ylxuanzn,yllidz,ylylfjgyw,ylfjchz,ylfjqc,ylfjzzq,ylfjfyw,ylfjlyb,ylfjzy,yljiangmx,ylzhangheng,ylzhanglsh,ylch,ylzhangxh,ylwux,ylchenmk,ylxuzx,ylduf,ylchenyf,ylchendm,ylmoying,ylyanglan,ylqinhq,ylwenzs,ylluoj,ylcengyt,yljiangjl,ylpanghf,ylzhanghb,ylchenhj,ylzhoul,ylliangmd,yllink,yllimj,ylpangjc,ylzhoush,yllimh,yljianghb,yllaijq,ylhup,ylchengm,ylhuangxp,ylchenmj,lczhanyl,yzshayq,yzwuzj,yzhuangh,yzwuxuej,yzwenhx,yzchenp,yzluoxq,yzxujg,yzlvql,yzwuzl,qinxq,zhuling,yzganrj,yzdouyj,yzpenghuiq,yzhuangxw,yzweiql,yzzhoucm,yzchenqinghua,yztangmm,liuchun,yzlinfl,yzfuth,yzweiyeq,yzxiewt,yzyangyz,yzlaily,yzmocm,yzliangwein,yzhuangqiw,yzzengzhan,yzlijh,yzliangyy,yzlinjing,yzxuweilong,yztangj,yzcenzq,yzliss,yzxiew,yztangyun,yzlixx,yzxielf,yzyangbin,yzwens,yzlianghy,yzluoting,yzzhanghx,yzhuangy,yzchenyb,yzgucj,yzlin,yzfuyx,yzlix,yzchenjq,yzguojt,yzlinyunsi,yzmohaiw,yzchenyu1,yzwujie,yzluoquan,yzfengyul,yzxiaoboc,yzpanghui,yzxiaoyao,yzjiangyuand,yzliuguoy,yzluowei,yzliguiy,yzyangwenh,yzyinshaoy,yzchenwenj,yzwangdengw,yzfengliy,yzliaoyunh,yzpengqy,yzlvh,yzchenyu,yzlongk,yzwangj,yzweiyb,yzlipeizhen,yzzhangyiy,yzzhoujm,yzchenbolin,yzcdm,yzhuyi,yzliangjiemin,yzliumeiyan,yzwenxj,yzliangl,yzzhouxt,yzyangyl,yzliuym,yzzhujj,yzhuangyan,yzliangdj,yzlilm,yzhuangyany,yzpangminj,yzliaojuan,yzzhangxiongl,yzlihl,yzliangxl,yzchenhongjian,yzhuanglj,yzliyifan,yzmoujm,yzsuni,yzyanjiaj,yzyangsunwei,yzyzliujh,yzsunxh,yzhuangll,yzchenxm,yzliangjf,yzqinwh,yzlingmeim,yzchenl,yzliyongl,yzwuzhengh,yzliw,xytanggf,yzningfs,yzzhongqh,yzchenz,yzliangwd,yzliyj,yztanxf,yzcenggw,yzzhongmei,yzchenqd,yzyangx,yzhuangw,yzliangcg,yzzhongjh,yzchenrenp,yzzhoumengy,yztenghongl,yzzhulk,yztangwl,yztianzm,yzluoy,yzzhongj,yzchenglq,yzwucy,yzyuanl,yzchenj,yzgaosy,yzzhaos,yzyangsq,cheny,yzhuangjq,yzlik,yzliyq,yzhexiaod,yzkangshiz,yzmogx,yzmoshan,yzluol,yzjianglinghua,yzliangdanfeng,yzliangyw,yzsujing,yztangweiKA1,yzwangx,yzwengm,wenyinglin,yzyangzj,yzzhouhaiheng,yzhuangjc,yzliangb,yzzhouc,yzwentt,yzzhangzhih,yzliwenw,yztangyong,yzbaozh,yzheh,yzheyy,yzlvc,yzlvyuf,yzluoyex,yzzhengyy,yzsudl,yzhuangs,yzchena,yzxuang,yzwenyant,yzliangshuang,yzliubeijiang,yzyutong,yzyangcl,yzlic,yzkuangxs,yzliangw,yfjouid,efer,yvedfeindfs,sdfweffvwer,fwef,wef,wef,wef,,we,f,wf,,,fwe,fw,efwe,f,wf,,wef,w');

commit;

3.PHP 查詢腳本

<?php

header("Content-Type: text/html;charset=utf-8");

        $link = dm_connect("192.168.100.2:5237", "SYSDBA", "SYSDBA") or die("Could not connect : " . dm_error());

        echo '<br>';

        print('4200 個字符時的輸出結(jié)果:');

        echo '<br>';

        $result = dm_query("SELECT T_TEXT FROM TEXT_TEST WHERE T_ID = 4200") or die("Query failed : " . dm_error());

        while ($line = dm_fetch_array($result, DM_ASSOC)) {

                foreach ($line as $col_value) {

                print($col_value);

                }

        }

        echo '<br>';

dm_free_result($result);

/* 斷開連接*/

dm_close($link);

4200 個字符時的輸出結(jié)果

liuyongjian,ylwenwen,ylcaiwf,ylchenj,ylliangn,ylhuangzh,yllinxu,ylsuls,ylhec,yzwenzx,yzdengl,ylhehq,ylligp,yljiangjy,liangjingmin,maiyixin,yllinlu,ylpub,ylliw,ylzhouxiong,ylchenz,ylzhailing,ylwangs,ylchenzs,yzlihs,wenwu,caoxiaoqun,ylchenxb,chenyan,ylhuangzf,ylliangyi,ylhuanghui,ylliyh,ylguanwz,ylwujian,ylbgs,ylsujm,ylyuandr,ylliny,yljiangys,ylchenx,ylchengq,ylyangz,ylsuw,ylyuh,ylchenyj,ylwangsq,ylyaozd,ylluob,ylzhonggx,ylhuangtj,ylhelj,ylningyl,ylmingmt,ylyanggy,ylzhuyuchong,ylzhonggui,yllinyongyi,ylpengjq,ylsucx,ylchenyt,ylfangx,yllugs,yltanqq,yllill,ylpcj,ylliuqs,ylyangtl,ylpangbs,ylluos,yllvhh,ylliangj,ylliangf,ylouyzx,ylchendw,yljiangsd,ylzhengyb,yllixiaoli,yzlinys,blzhoudm,ylsuyu,xutr,ylhehuan,ylmasy,bblixyu,rxyangqj,ylyincong,ylqiupc,yllulijuan,ylhuangyy,ylhuangby,yldengcx,ylchentt,ylchenchi,ylchenyp,ylliangyu,ylchensh,ylchenm,ylhuangbc,yllib,ylchenmx,blganwq,ylzoulj,rxliun,luoxk,ylzhangxy,ylgey,yllimengKA0,yllianghy,yllihb,ylwuqiuling,ylliaohuiyan,ylweizr,ylliangkl,yltanz,ylluogs,ylchenfz,ylzhongx,ylpanbf,yljiangh,ylliyanz,ylzhangln,ylweiyx,ylchengy,ylweiyanran,ylchenglf,ylweilan,ylchenwj,ylpangz,ylcaiw,ylliangwq,yllinhq,bbchengj,bllvb,ylyangx,ylliqin,ylningting,yzliangxz,ylqiuzhan,ylchenww,ylchenhua,ylhuangh,ylpangly,ylchenxiaogang,bllim,ylluyn,ylzhousw,ylliuwy,ylhuanggs,ylliyz,ylleitm,ylzhangjg,yllust,ylhuanghq,ylluocs,ylheh,ylzhangnw,ylxumy,ylchenjs,yllianghui,ylzhangyz,ylzhongr,ylliangbi,ylsuxm,ylzhouhq,ylcaidy,ylyangqm,ylliyl,blzhongp,bbchenwn,ylyllijl,yllinjx,yllijy,ylchenchu,ylhuangsw,ylxuelf,ylyangzs,ylyaol,ylmoting,ylxieshuqiu,yltuhuan,ylliangp,ylhuangfy,yllixy,ylzhongbb,rxhuangjie,ylzhangwl,blqinhj,ylnixiangqin,ylhunagj,ylpangm,yllinzj,ylfengsq,ylliangyy,ylmohc,ylyedm,ylfancl,ylqinzy,ylzhangxg,ylhuangg,ylgaotm,ylchenyc,ylliangh,ylchenyu,bbpangan,ylhuangxm,ylzhouhb,ylyangyz,yllizf,ylylhuangjy,ylwenyy,yllinj,ylliangb,yljiangsl,ylwenfj,ylchenq,ylwuc,yllizq,ylliugb,ylsudb,yllinly,ylguangw,yllianghc,ylxuanzn,yllidz,ylylfjgyw,ylfjchz,ylfjqc,ylfjzzq,ylfjfyw,ylfjlyb,ylfjzy,yljiangmx,ylzhangheng,ylzhanglsh,ylch,ylzhangxh,ylwux,ylchenmk,ylxuzx,ylduf,ylchenyf,ylchendm,ylmoying,ylyanglan,ylqinhq,ylwenzs,ylluoj,ylcengyt,yljiangjl,ylpanghf,ylzhanghb,ylchenhj,ylzhoul,ylliangmd,yllink,yllimj,ylpangjc,ylzhoush,yllimh,yljianghb,yllaijq,ylhup,ylchengm,ylhuangxp,ylchenmj,lczhanyl,yzshayq,yzwuzj,yzhuangh,yzwuxuej,yzwenhx,yzchenp,yzluoxq,yzxujg,yzlvql,yzwuzl,qinxq,zhuling,yzganrj,yzdouyj,yzpenghuiq,yzhuangxw,yzweiql,yzzhoucm,yzchenqinghua,yztangmm,liuchun,yzlinfl,yzfuth,yzweiyeq,yzxiewt,yzyangyz,yzlaily,yzmocm,yzliangwein,yzhuangqiw,yzzengzhan,yzlijh,yzliangyy,yzlinjing,yzxuweilong,yztangj,yzcenzq,yzliss,yzxiew,yztangyun,yzlixx,yzxielf,yzyangbin,yzwens,yzlianghy,yzluoting,yzzhanghx,yzhuangy,yzchenyb,yzgucj,yzlin,yzfuyx,yzlix,yzchenjq,yzguojt,yzlinyunsi,yzmohaiw,yzchenyu1,yzwujie,yzluoquan,yzfengyul,yzxiaoboc,yzpanghui,yzxiaoyao,yzjiangyuand,yzliuguoy,yzluowei,yzliguiy,yzyangwenh,yzyinshaoy,yzchenwenj,yzwangdengw,yzfengliy,yzliaoyunh,yzpengqy,yzlvh,yzchenyu,yzlongk,yzwangj,yzweiyb,yzlipeizhen,yzzhangyiy,yzzhoujm,yzchenbolin,yzcdm,yzhuyi,yzliangjiemin,yzliumeiyan,yzwenxj,yzliangl,yzzhouxt,yzyangyl,yzliuym,yzzhujj,yzhuangyan,yzliangdj,yzlilm,yzhuangyany,yzpangminj,yzliaojuan,yzzhangxiongl,yzlihl,yzliangxl,yzchenhongjian,yzhuanglj,yzliyifan,yzmoujm,yzsuni,yzyanjiaj,yzyangsunwei,yzyzliujh,yzsunxh,yzhuangll,yzchenxm,yzliangjf,yzqinwh,yzlingmeim,yzchenl,yzliyongl,yzwuzhengh,yzliw,xytanggf,yzningfs,yzzhongqh,yzchenz,yzliangwd,yzliyj,yztanxf,yzcenggw,yzzhongmei,yzchenqd,yzyangx,yzhuangw,yzliangcg,yzzhongjh,yzchenrenp,yzzhoumengy,yztenghongl,yzzhulk,yztangwl,yztianzm,yzluoy,yzzhongj,yzchenglq,yzwucy,yzyuanl,yzchenj,yzgaosy,yzzhaos,yzyangsq,cheny,yzhuangjq,yzlik,yzliyq,yzhexiaod,yzkangshiz,yzmogx,yzmoshan,yzluol,yzjianglinghua,yzliangdanfeng,yzliangyw,yzsujing,yztangweiKA1,yzwangx,yzwengm,wenyinglin,yzyangzj,yzzhouhaiheng,yzhuangjc,yzliangb,yzzhouc,yzwentt,yzzhangzhih,yzliwenw,yztangyong,yzbaozh,yzheh,yzheyy,yzlvc,yzlvyuf,yzluoyex,yzzhengyy,yzsudl,yzhuangs,yzchena,yzxuang,yzwenyant,yzliangshuang,yzliubeijiang,yzyutong,yzyangcl,yzlic,yzkuangxs,yzliangw,yyzsu ? ) ? <


? <


? iangn,ylhuangzh,yllinxu,

我們看到操作4113字符后的數(shù)據(jù)是異常的

問題所在

出現(xiàn)亂碼是由于php.ini中dm模塊的 dm.defaultlrl 參數(shù)設(shè)置不正確導(dǎo)致,該參數(shù)的默認值是4096,默認值下 每列最大讀取的字節(jié)數(shù) 是4096+20=4114加結(jié)尾\0,所以上面的數(shù)據(jù)維護就出現(xiàn)了顯示異常的情況;

解決方法

根據(jù)實際要讀取的數(shù)據(jù)長度將該值設(shè)當設(shè)大即可,例如我要顯示4120字符,那么我們可以將該參數(shù)設(shè)置為5000,如下:

dm.defaultlrl=5000 即可。

修改后重新啟動php環(huán)境,然后再測試,數(shù)據(jù)正常了。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI