左結合選択クエリを使用して csv エクスポート スクリプトを作成しました。Localhost サーバー (Windows 8) では同じデータで正常に動作していますが、Web サーバー (Linux) ではうまく動作していません。
すべての行が Localhost で連続してエクスポートされます。しかし、同じ MySQL データを使用した同じクエリが Web サーバーから間違ってエクスポートされます。
たとえば、説明列の後の行 261 で、行 261 の残りの列を含む新しい行に分割されます。また、行 263 から行 415 まで正常にデータがエクスポートされます。説明の後に新しい Excel 行として再び分割されます。その後、再び 1133 まで正常にエクスポートされます。新しい Excel 行としての説明の後、再び壊れました。
この問題が理解できません。スクリプトの何が問題になっていますか?
$values = mysql_query("SELECT
t1.inqty, IFNULL(t2.outqty, '0') outqty, (IFNULL(t1.inqty,'0') - IFNULL(t2.outqty, '0')) totalHand,
t1.serialno,
(SELECT projectname FROM projects WHERE t1.project_id = projects.project_id) AS ProjectName,
TRIM(t1.productid),
TRIM(t1.description),
TRIM(t1.revisionstate),
TRIM(t1.remarks),
(SELECT username FROM wms_users WHERE t1.userid = wms_users.id) AS UserName,
(SELECT cusname FROM customerinfo WHERE t1.cus_id = customerinfo.cus_id) AS CustomerName,
t1.inserteddate
FROM
(
SELECT *, SUM(in_quantity) inqty FROM stockin GROUP BY serialno
) t1 LEFT JOIN
(
SELECT serialno, SUM(out_quantity) outqty FROM stockout GROUP BY serialno
) t2
ON t1.serialno = t2.serialno
");
$headings = array('INQTY','OUTQTY','TOTAL IN HAND','SerialNo','Project Name','ProductID','Description','Revision State','Remarks','Username','Customer Name','Inserted Date');
$i = 0;
foreach ($headings as $heading) {
$csv_output .= $heading . ",";
$i++;
}
$csv_output .= "\n";
while ($rowr = mysql_fetch_row($values)) {
for($j = 0; $j < $i; $j++) {
$csv_output .= $rowr[$j] . ",";
}
$csv_output .= "\n";
}
ob_end_clean();
$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
//header("Content-type: text/csv");
header('Content-Length: ' . strlen($csv_output) );
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;