2012-08-09 3 views
1

이 나를 쉽게 이동 자극 사이에 차이가;길이 dev에 내가 PHP에 새로 온 이후

내 개발 스택 XAMP와 윈도우 7), 내 라이브 서버는 턴키 LAMP 스택이다.

$sql = "SELECT Field1 FROM tb_Table"; 

     $rs = $db->Execute($sql); 

     if (!$rs) { 
      print $db->ErrorMsg(); 
     } else { 

      $arr = $rs->GetRows(); 
      $rows = ''; 
      //Loop through parent array (rows) 
       for ($i=0;$i<=(count($arr)-1);$i++) { 
        $rows .= " ".$arr[$i][0]." "; 
       } 
print strlen($rows) 

내 로컬 컴퓨터에있는 문자열 길이가 136,858

하는 서버에서 195,057이다 : 나는 MSSQL에 연결하고 아래의 코드를 문자열로 모든 결과를 추가 ADODB를 사용하고

데이터베이스에서 동일한 수의 행이 반환되었음을 확인했지만 환경간에 문자열의 길이가 다른 이유를 이해하지 못합니다.

foreach($arr as $row) { 
    $rows .= " ".$row[0]." "; 
} 

이 가능성을 해결합니다

모든 포인터는 매우 내가 ADODB 확장 너무 익숙하지 해요,하지만 당신이 당신의 for 루프를 변경 시도 할 수

+0

정말 동일한 데이터입니까? (같은 수의 행뿐 아니라) – Alfabravo

+0

동일한 행 수를 확인했지만 각 행이 동일한 지 확인 했습니까? – sachleen

+0

예, SQL은 동일하고 데이터 양은 증가 할 수 있지만 (하루에 몇 reocrds에 의해서만) prod 문자열은 항상 dev 문자열보다 훨씬 짧습니다. 두 인스턴스가 모두 내 앞에 열려있어 즉시 두 개의 결과가 다르게 나타납니다 – SWa

답변

1

이 그것을 sussed. 문제는 공급자 코드가 아니 었습니다. Linux 상자의 공급자는 필드에서 최대 길이 255 자만 반환합니다.

Windows 공급자는 필드의 전체 길이를 반환합니다.

감사합니다.

1

을 감상 할 수있다 배열에 할당 된 키는 연속적이지 않습니다. 그 도움이되지 않는 경우는 다중 바이트 문자가 포함 된 인코딩 작업을하므로

, 대신 mb_strlen()와 문자열 길이를 계산하려고 :

확인
print mb_strlen($rows); 
+0

제안 해 주셔서 감사합니다.하지만 불행히도 저는 같은 결과를 얻습니다. – SWa

관련 문제