2013-09-26 161 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文件下載時,記錄就會被複制。我得到的結果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 

我沒有得到什麼問題。任何人都可以幫我解決這個問題嗎?提前致謝。

+0

你會得到重複嗎? f每個記錄,還是僅僅一些?另外,當你運行查詢時,你會說它會返回正確的記錄 - 你怎麼測試它? –

+0

我回應了結果查詢並在phpmyadmin中執行。目前,我只有2條滿足查詢的記錄。現在只有第一條記錄被複制。 – Jenz

+0

*旁註:*停止使用已棄用的'mysql_ *'函數。改用MySQLi或PDO。 – Raptor

回答

1

我看到的問題

你concatinate的result每一行,然後回顯。所以,每次你回聲 - 你會迴應所有以前的結果+當前的結果。

要麼,變:

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

到:

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

或移動echo $result; while循環外

+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;