具有相同导出数据的两个不同视图(LocalHost和WebServer)


Two different view with same exported data (LocalHost and WebServer)

我创建了一个带有左联接-选择查询的csv导出脚本。它在具有相同数据的Localhost服务器(windows8)上运行良好,但在web服务器(Linux)上运行不好。

每一行都在Localhost上连续导出。但是,从web服务器导出相同MySQL数据的相同查询是错误的。

例如,在描述列之后的行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;

我认为您使用CSV从localhost导出数据,并且数据包含逗号","值,并且您没有用a括起您的值",CSV方法总是会发生这种情况。

您可以使用LOAD DATA来避免此类问题。就是一个例子

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name
  FIELDS TERMINATED BY ',' ENCLOSED BY '"'
  LINES TERMINATED BY ''r'n'

(以上几行取自将表导入MySQL时如何在CSV值中转义逗号?)例如

http://dev.mysql.com/doc/refman/5.1/en/load-data.html提供了更多详细信息