小弟我用php连接mssql的时候,在查询某个数据的字段时,发现只得到了该字段一部分内容。
该字段在数据中的类型为text,我用的是pdo连接数据库.....我的测试代码如下:$db=new PDO("mssql:host=localhost;dbname=t001",'trssj','trssj');
$result=$db->query("select * from ddiurnal where idd=827900");
foreach ($result as $row){
   foreach ($row as $k=>$val){
       echo iconv("gb2312",'utf-8',$val);
       //echo $val;
       echo "---------------------------------------";
   }
}

解决方案 »

  1.   

    1:是不是编码问题造成的。
    2:是不是text字段内容有些特殊字符造成text内容截断?
      

  2.   

    iconv函数对于一些生僻的字符可能会无法转码,导致转码终止。

    echo iconv("gb2312",'utf-8',$val);
    改成
    echo iconv("gb2312",'utf-8//IGNORE'',$val);
      

  3.   

    多打了个引号···
    echo iconv("gb2312",'utf-8//IGNORE',$val); 
      

  4.   

    不是编码问题弄的
    如果我把iconv这个函数干掉,我不对他进行转码,他还是一样的只显示一部分数据后面没有什么的特殊字符我以为同事说这是pdo连接的一个bug,这个是网址:
    http://bugs.php.net/bug.php?id=38805&edit=3
      

  5.   

    修改PHP.INI里对应MSSQL那块
    好象有个4048吧还是多少,记的不是很清楚了,把他改的大大的,就好了
      

  6.   

    不用这个 $db->fetchAll( ) 吗?
    $db->query($sql);返回的是一个BOOL对象吧
      

  7.   

    遇到过一样的问题:
    php.ini; Valid range 0 - 2147483647.  Default = 4096.
    ;mssql.textlimit = 4096
    mssql.textlimit = 147483647; Valid range 0 - 2147483647.  Default = 4096.
    ;mssql.textsize = 4096
    mssql.textsize = 147483647
      

  8.   

      这主要是我的iconv函数弄出来的  刚刚我没有检查到这个问题
    我在用到iconv函数,把从数据库得到的gb2312数据转换为utf-8的时候,有时候遇到某一字之后,信息就会断了,就像今天的这样,  数据从开头到了"是新华社主管、",后面就没有了,可是我在数据库还有"社背景(财经国家周刊》是新华社主管、瞭望周刊社主办的深度财经周刊),很难让人认为只是一个巧合?",转换时候到了"瞭望"的前面就报
    <b>Notice</b>:  iconv() [<a href='function.iconv'>function.iconv</a>]: Detected an illegal character in input string in<b>D:\wamp\www\data_flex\application\controllers\helper\GlobalFun.php</b> on line <b>399</b><br /> 的错误信息???????  请问大侠们,这是不是遇到了特殊的字符,iconv这个函数转换不了,就报错了.......
      

  9.   

    如果字段是mssql的字段是 ntext 类型,如果出现怪异字符就会出错...
    select lb_id,convert(text,news_subject) as news_subject  sql语句这样写转成text
      

  10.   

    哦,没注意看是PDO
    我用的是 php_mssql.dll ,找个最新的应该没问题的
      

  11.   

    3Q  这个查询一部分数据的问题解决了,但是我加了ignore之后,数据中
    社背景(财经国家周刊》是新华社主管、瞭望周刊社主办的深度财经周刊),
    很难让人认为只是一个巧合?
    这个字居然转换为了t
    请问大侠这个是什么原因?????
      

  12.   

    瞭 不属于 GB2312$str = "社背景(财经国家周刊》是新华社主管、瞭望周刊社主办的深度财经周刊)";
    echo iconv('gb2312', 'utf-8', $str);//社背景(财经国家周刊》是新华社主管、
    echo iconv('gb2312', 'utf-8//IGNORE', $str); //社背景(财经国家周刊》是新华社主管、t望周刊社主办的深度财经周刊)echo iconv('gbk', 'utf-8', $str);//社背景(财经国家周刊》是新华社主管、瞭望周刊社主办的深度财经周刊)
      

  13.   

    答案在LS,mssql取出来默认是GBK
      

  14.   

    看来以后gb2312也用gbk。这样保险