gpt4 book ai didi

php - 使用 PHP 从 MySQLi 生成 CSV 文件正在保存但不要求下载

转载 作者:行者123 更新时间:2023-11-30 22:44:10 25 4
gpt4 key购买 nike

所以我的以下代码根据指定的表生成了一个 CSV,并生成了文件并保存到 downloads/filename.csv,但是它不会在生成后要求用户下载。有什么想法吗?

代码如下:

PHP

    header("Content-type: text/csv"); 

// Connect to the database
$mysqli = new mysqli(DATABASE_HOST, DATABASE_USER, DATABASE_PASS, DATABASE_NAME);

// output any connection error
if ($mysqli->connect_error) {
die('Error : ('.$mysqli->connect_errno .') '. $mysqli->connect_error);
}

$tables = array('invoices', 'customers', 'invoice_items'); // array of tables need to export

$file_name = 'invoice-export-'.date('d-m-Y').'.csv'; // file name
$file_path = 'downloads/'.$file_name; // file path

$file = fopen($file_path, "w"); // open a file in write mode
chmod($file_path, 0777); // set the file permission

// loop for tables
foreach($tables as $table) {
$table_column = array();
$query_table_columns = "SHOW COLUMNS FROM $table";

// fetch table field names
if ($result_column = mysqli_query($mysqli, $query_table_columns)) {
while ($column = $result_column->fetch_row()) {
$table_column[] = $column[0];
}
}

// Format array as CSV and write to file pointer
fputcsv($file, $table_column, ",", '"');

$query_table_columns_data = "SELECT * FROM $table";

if ($result_column_data = mysqli_query($mysqli, $query_table_columns_data)) {

// fetch table fields data
while ($column_data = $result_column_data->fetch_row()) {
$table_column_data = array();
foreach($column_data as $data) {
$table_column_data[] = $data;
}

// Format array as CSV and write to file pointer
fputcsv($file, $table_column_data, ",", '"');
}
}
}

// close file pointer
fclose($file);

// ask either save or open
header("Pragma: public");
header("Expires: 0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename='{$file_name}';" );
header("Content-Transfer-Encoding: binary");

// open a saved file to read data
$fhandle = fopen($file_path, 'r');
fpassthru($fhandle);
fclose($fhandle);
$mysqli->close();
die;

最佳答案

这应该允许您选择要写入 CSV 文件的字段及其顺序。

// loop over the rows, outputting them
while($row = $results->fetch_assoc()) {
$data = [
$row["myfirstfield]",
$row["mysecondfield"],
....
];
fputcsv($output, $data);
}

关于php - 使用 PHP 从 MySQLi 生成 CSV 文件正在保存但不要求下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30150379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com