PHP中字段数据超过4113字符后的数据异常问题解决
环境信息:
操作系统: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
; 允许建立持久性连接的最大数. -1 为没有限制.
dm.max_persistent = -1
; 允许建立连接的最大数(包括持久性连接). -1 为没有限制.
dm.max_links = -1
; 默认的主库地址
dm.default_host = 192.168.100.2
; 默认的连接用户名
dm.default_user = SYSDBA
; 默认的连接口令.
dm.default_pw = SYSDBA
; 连接超时,这个参数未实际的用到,等待服务器支持
dm.connect_timeout = 10
; 对于各种变长数据类型,每列最大读取的字节数。如果它设置为0或是小于0,那么,读取变长字段时,将显示NULL值
;dm.defaultlrl = 4096
; 是否读取二进制类型数据,如果它设置为0,那么二进制将被NULL值代替
dm.defaultbinmode = 1
; 是否允许检察持久性连接的有效性,如果设置为ON,那么当重用一个持久性连接时,会检察该连接是否还有效
dm.check_persistent = ON
;连接的端口号
dm.port = 5236
现象说明PHP在使用DM的PDO模块读取TEXT字段数据时出现下面情况
1.当数据有4113字符时显示正常;
2.当数据有4114-4116个时,只会显示到第4113字符;
3.当数据超过4116个时第4113后的字符将出现异常,之后的数据与原数据不符;
测试过程1.创建一张表CREATE TABLE "SYSDBA"."TEXT_TEST"(T_ID INT,T_TEXT TEXT);
2.插入测试数据-数据6,TEXT_TEST字段数据共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个字符时的输出结果:');
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个字符时的输出结果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字符后的数据是异常的
问题所在出现乱码是由于php.ini中dm模块的dm.defaultlrl参数设置不正确导致,该参数的默认值是4096,默认值下每列最大读取的字节数是4096+20=4114加结尾\0,所以上面的数据维护就出现了显示异常的情况;
解决方法根据实际要读取的数据长度将该值设当设大即可,例如我要显示4120字符,那么我们可以将该参数设置为5000,如下:
dm.defaultlrl=5000即可。
修改后重新启动php环境,然后再测试,数据正常了。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。