首页 > 解决方案 > 如何在 MySQL 数据导出中设置文本输出对齐方式?

问题描述

这是 SQL 查询

$query = "SELECT col1,col2,col3,col4,col5,col6,col7,col8 FROM table;
if (!$result = mysqli_query($con, $query))
{
    exit(mysqli_error($con));
}

这是输出文本文件的部分

$filename = "output.txt";
$file = fopen($filename, "w");
foreach ($result as $rows)
{
    fwrite($file, implode("\t",$rows).PHP_EOL);
}

header('Content-Description: File Transfer');
header('Content-type: text/tab-separated-values');
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;

这是当前输出:
这是当前输出这是我需要的输出:
这是我需要的输出

标签: phpmysqlexportalignment

解决方案


正如@Slava Rozhnev 所评论的那样,最好的方法是像这样使用 csv :

<?php

$query = "SELECT col1,col2,col3,col4,col5,col6,col7,col8 FROM table";
$result = mysqli_query($con, $query);

$fp = fopen('file.csv', 'w');

while( $row = mysqli_fetch_array($result, MYSQLI_ASSOC) ) {
    fputcsv($fp, $row);
}

fclose($fp);

推荐阅读