-1

我敢肯定这对其他人来说很简单,但它让我无法理解。我有一个函数可以根据来自内部网站的查询输入生成 .csv 文件。问题是,出于速度目的,我想运行 1 个查询以保存到两个不同的数组。其中一个我可以传递给一个函数,另一个用于打印表格。我试图将相同的 $result var 传递给函数。一旦通过函数发送,似乎就剥离了数据?我需要一些帮助。

功能代码:

function save_to_csv($result1, $filename, $attachment = false, $headers = true) {
    if($attachment) {
        // send response headers to the browser
        header( 'Content-Type: text/csv' );
        header( 'Content-Disposition: attachment;filename='.$filename);
        $fp = fopen('php://output', 'w');
    } else {
        $fp = fopen($filename, 'w');
    }

    $result1 = mysql_query($query1) or die( mysql_error() );

    if($headers) {
        // output header row (if at least one row exists)
        $row = mysql_fetch_assoc($result1);
        if($row) {
            fputcsv($fp, array_keys($row));
            // reset pointer back to beginning
            mysql_data_seek($result1, 0);
         }
    }

     while($row = mysql_fetch_assoc($result1)) {
         fputcsv($fp, $row);
    }

    fclose($fp);
}

我试过像这样设置第二个数组

    $csv_result = array(); 
    also tried
    $csv_result = $result = mysql_query($query);

我假设它在这里,但我只是看不到它。

4

1 回答 1

0

这段代码中没有任何内容可以说明为什么需要两个单独的数组。在您设置的行之后$result1,您可以简单地执行以下操作以获得完全相同的效果:

$row = mysql_fetch_assoc($result1);
if ($row) {
    if ($headers) {
        fputcsv($fp, array_keys($row));
    }
    fputcsv($fp, $row);
}

该变量$row没有被修改,并且仍然等于从 中检索到的数据$query1。除非要修改其中一个,否则实际上不需要制作重复的数组。但是,如果您想在任何时候复制数据,您可以使用:

$new_copy = $row;
于 2013-07-30T15:47:40.587 回答