2013-09-26 4 views
0

쿼리 결과를 CSV 파일로 내보내고 있습니다. 코드는 다음과 같습니다.CSV 파일이 여러 레코드를 가져 오는 중

$query = "SELECT DATE(punchdetails.punchin) as punchday,punchdetails.punchin,punchdetails.punchout,employeedetails.employeename 
          FROM punchdetails join(employeedetails) ON punchdetails.employeeid=employeedetails.employeeid 
          AND punchdetails.employeeid=$employeeid AND DATE(punchdetails.punchin)=$fromdate"; 

header("Content-type: application/csv"); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
ini_set('display_errors',1); 
$private=1; 
error_reporting(E_ALL^E_NOTICE); 
$select_c = mysql_query($query); 
while ($row = mysql_fetch_array($select_c)) 
{ 
    $intime = strtotime($row['punchin']); 
    $mysqlintime = date('H:i:a', $intime); 
    $outtime = strtotime($row['punchout']); 
    $mysqlouttime = date('H:i:a', $outtime); 
    $result.=$row['employeename'].','.$row['punchday'].','.$mysqlintime.','.$mysqlouttime; 
    $result.="\n"; 
    echo $result; 
}  

쿼리를 실행할 때 레코드가 올바르게 반환됩니다. 그러나 쿼리의 결과를 CSV 파일로 다운로드하면 레코드가 중복됩니다. 나는 점점 아니에요

Sonu,2013-09-26,10:55:am,11:12:am 

Sonu,2013-09-26,10:55:am,11:12:am 

Kristo,2013-09-26,11:23:am,11:24:am 

문제가 무엇 : 아래 그림과 같이 나는 결과 csv 파일 데이터를 얻고있다. 아무도 나를 해결할 수 있습니까? 미리 감사드립니다.

+0

복제본을 구합니까? 모든 레코드 또는 일부 레코드? 또한 쿼리를 실행할 때 정확한 레코드를 반환한다고 말하면 어떻게 테스트 했습니까? –

+0

결과 쿼리를 echo하고 phpmyadmin에서 실행했습니다. 현재 나는 쿼리를 만족하는 레코드가 2 개 밖에 없습니다. 첫 번째 레코드 만 복제됩니다. – Jenz

+0

* sidenote : * 더 이상 사용되지 않는'mysql_ * '함수 사용을 중단하십시오. 대신에 MySQLi 또는 PDO를 사용하십시오. – Raptor

답변

1

나는 다음 에코, 각 행과 result을 concatinate 문제

를 참조하십시오. 따라서, 에코를 할 때마다 이전 결과와 현재 결과가 모두 반영됩니다.

중 하나를 변경 :

$result.=$row['employeename'].','.$row['punchday'].','.$mysqlintime.','.$mysqlouttime; 
$result.="\n"; 

에 :

echo $row['employeename'].','.$row['punchday'].','.$mysqlintime.','.$mysqlouttime; 
echo "\n"; 

또는 while 루프 외부 echo $result; 이동

+0

예 이동했을 때 echo $ result; while 루프 외부. 모두에게 감사드립니다. – Jenz

1

당신은 while 루프의 외부에 결과 $ 에코해야합니다

$result=''; 
while ($row = mysql_fetch_array($select_c)) 
{ 
    $intime = strtotime($row['punchin']); 
    $mysqlintime = date('H:i:a', $intime); 
    $outtime = strtotime($row['punchout']); 
    $mysqlouttime = date('H:i:a', $outtime); 
    $result.=$row['employeename'].','.$row['punchday'].','.$mysqlintime.','.$mysqlouttime; 
    $result.="\n"; 
}  
echo $result; 
관련 문제