2012-05-30 4 views
0

MySQL 쿼리를 CSV 파일로 내보내는 스크립트를 작성 중입니다. 지금까지는 두 번째 foreach() 문에 잘못된 인수가 있다는 것을 제외하고는 너무 좋아졌습니다! 나는 mysql_data_seek을 사용하려고했지만 그게 문제를 해결하지 못했습니다. AFAK $row은 배열이므로 작동해야합니다. `이 있어야 후 '동안 ($;foreach() 오류의 원인을 확인할 수 있습니까?

<?php 

$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error()); 
mysql_select_db("database", $conn); 

if(isset($_POST['submit'])) 
{ 
    $filename = 'uploads/'.strtotime("now").'.csv'; 

    $fp = fopen($filename,"w"); 

    $sql = mysql_query("SELECT * FROM master") or die(mysql_error()); 
    $row = mysql_fetch_assoc($sql); 

    $seperator = ""; 
    $comma = ""; 

    foreach($row as $name => $value) 
    { 
     $seperator .= $comma . '' .str_replace('','""',$name); 
     $comma = ","; 
    } 

    $seperator .= "\n"; 

    fputs($fp,$seperator); 


    mysql_data_seek($sql, 0); 

    while($row = mysql_fetch_assoc($sql)); 
    { 
     $seperator = ""; 
     $comma = ""; 
     foreach($row as $name => $value) 
     { 
      $seperator .= $comma . '' .str_replace('','""',$value); 
      $comma = ","; 
     } 
     $seperator .= "\n"; 
     fputs($fp,$seperator); 
    } 
    fclose($fp); 
} 


?> 
+2

이하이어야한다, 먼저 foreach 루프를 추가 한 이유를 얻을 수 아니에요 행 = mysql_fetch_assoc ($ sql))'. 그것은 아마도 루프를 취소하고'$ row'의 값을 다시 정의하지 않을 것입니다. 이것은 오래된 배열을 사용한다는 것을 의미합니다. – Death

+1

var_dump는 무엇이라고 말합니까? – xdazz

+0

while 루프 문 끝에서';'가 문제입니다. while 루프의 블록을 완료합니다. – vedarthk

답변

0

난 당신이 코드가 나는`잘 모르겠어요 등

<?php 

$conn = mysql_connect("12**strong text**7.0.0.1", "root", "root") or die(mysql_error()); 
mysql_select_db("database", $conn); 

if(isset($_POST['submit'])) 
{ 
    $filename = 'uploads/'.strtotime("now").'.csv'; 

    $fp = fopen($filename,"w"); 

    $sql = mysql_query("SELECT * FROM master") or die(mysql_error()); 
    while($row = mysql_fetch_assoc($sql)); 
    { 
     $seperator = ""; 
     $comma = ""; 
     foreach($row as $name => $value) 
     { 
      $seperator .= $comma . '' .str_replace('','""',$value); 
      $comma = ","; 
     } 
     $seperator .= "\n"; 
     fputs($fp,$seperator); 
    } 
    fclose($fp); 
} 


?> 
+0

첫 번째 foreach 루프는 $ seperator. = $ comma로 표시된 필드 헤더의 이름을 출력하는 데 사용됩니다. ''.str_replace ('', "" ', $ name); 두 번째 foreach 루프는 $ seperator. = $ comma로 표시된 필드의 값을 출력하는 데 사용됩니다. ''.str_replace ('', "" ', $ value); – jesterII

관련 문제