MSSQL数据库中Text类型字段在PHP中被截断之解

    在PHP中使用了MSSQL数据库,恰巧数据库中又使用了Text类型字段,于是问题产生了。每次从数据库中查询得到的数据总是被莫名的截断,一开始是以为我使用的PHP框架中对字符串的长度有所限制,后来发现这是个较愚蠢的想法,因为在提交数据时可以将字符串内容全部的提交到数据库中,只是读取时发生此现象,于是上网搜寻是否有类似的问题。运气还挺不错,第一次搜索就找到了解决的办法,遂决定将其转贴在我的Blog中,供自己和广大PHP爱好者的不时之需。
   有两种解决方案,如下:  
   一、修改php.ini来实现:   
           打开php.ini,可看到mssql.textsize,mssql.textlimit两个选项:   
            ;   Valid   range   0   -   2147483647.   Default   =   4096.     
            ;mssql.textlimit   =   4096     
    
            ;   Valid   range   0   -   2147483647.   Default   =   4096.     
            ;mssql.textsize   =   4096   
    
            可以看到默认配置为4096字节,也就是经常碰到的被截断为4K,将之改为合适的大小,去掉前面的分号,然后保存并重起WEB服务器即可。   
    
            从上面两个选项可看到范围为:0   -   2147483647字节。
               if    (MS_SQL_G(textlimit)    !=     - 1 )   {   
                          
sprintf (buffer ,     " %li " ,    MS_SQL_G(textlimit));   
                          
if    (DBSETOPT(mssql . link ,    DBTEXTLIMIT ,    buffer) == FAIL)   {   
                                      efree(hashed_details);   
                                      dbfreelogin(mssql
. login);   
                                      RETURN_FALSE;   
                          }   
              }   
              
if    (MS_SQL_G(textsize)    !=     - 1 )   {   
                          
sprintf (buffer ,     " SET   TEXTSIZE   %li " ,    MS_SQL_G(textsize));   
                          dbcmd(mssql
. link ,    buffer);   
                          dbsqlexec(mssql
. link);   
                          dbresults(mssql
. link);   
              }   

    二、 在PHP中执行SELECT查询之前执行SET   TEXTSIZE:  

 mssql_query( " SET   TEXTSIZE   65536 " ); 

   从上面PHP源代码中可看到其实也是执行SET   TEXTSIZE的。


如果以上不起作用,可以尝试在查询语句中使用CAST函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值