高防服务器

PHP中字段数据超过4113字符后的数据异常问题解决


PHP中字段数据超过4113字符后的数据异常问题解决

发布时间:2020-08-05 04:48:56 来源:ITPUB博客 阅读:163 作者:yanhengdoudou 栏目:数据库

   

环境信息:

操作系统: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加结尾,所以上面的数据维护就出现了显示异常的情况;

解决方法

根据实际要读取的数据长度将该值设当设大即可,例如我要显示4120字符,那么我们可以将该参数设置为5000,如下:

dm.defaultlrl=5000 即可。

修改后重新启动php环境,然后再测试,数据正常了。

[微信提示:高防服务器能助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

[图文来源于网络,不代表本站立场,如有侵权,请联系高防服务器网删除]
[