2013-03-18 2 views
0

fputcsv를 사용하여 csv 파일에 쓰려고하는데 문자열이 너무 길면 오류가있는 것 같습니다.문자열이 길면 fputcsv가 실패합니다.

필기시 fputcsv에 제한이 있습니까?

+0

저장하려는 데이터의 기간은 얼마나됩니까? 열의 수, 가장 긴 요소, 가장 긴 줄, 전체 크기? –

+0

fputcsv()는 문자열 ....이 아닌 배열을 쓸 것으로 예상하고 길이 제한이 없습니다 .... show code –

+0

여기 코드 http://pastebin.com/xjF3ARCm – Brob

답변

0

trim() 절약하기 전에! 나는 그것을 해결하기 위해 (stripslashes()와 같이) 몇 가지 시도했다. 수동으로 fputcsv ($ fp, 'too loooooooooooo ... ong string')를 추가하면 제대로 작동합니다. 그런 다음이 함수에 비해 너무 길었던 DB 필드를 살펴본 결과 앞에 값이있는 공백을 발견했습니다.

function get_items($db_handler) { 
$array = array(); 
$query = "SELECT * FROM `db` WHERE <some condition>"; 
    $result = mysqli_query($db_handler, $query); 
$i = 0; 
while ($row = mysqli_fetch_assoc($result)) {  
    foreach ($row as $key => $value) $array[$i][$key] = trim($value); 
     $i++; 
} 
mysqli_free_result($result); 
return $array; 
} 
// now we put records into csv from the assoc array returned by get_items(): 

$items = get_items($db_handler); 
$fp = fopen($file, 'a+'); 
foreach ($items as $fields) // 
{ 
    fputcsv($fp, $fields); 
} 
fclose($fp); 

함수에서 foreach는 내부 ($ 값) 트림하는 것을 잊지 마세요 : 그래서 여기 코드입니다!

관련 문제