0

クエリの結果を 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

何が問題なのかわかりません。誰でもこれを解決するのを手伝ってもらえますか? 前もって感謝します。

4

2 に答える 2

1

問題がわかりました

を各行に連結しresultてから、エコーします。したがって、エコーするたびに、以前のすべての結果と現在の結果がエコーされます。

いずれかを変更します。

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

に:

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

またはecho $result;whileループの外側に移動します

于 2013-09-26T06:43:01.227 に答える
1

while ループの外で $result をエコーする必要があります。

$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;
于 2013-09-26T06:43:36.553 に答える