我有一个类似的过程,将数据库中的所有电子邮件地址输出到可下载的txt文件中。看起来是这样的:
$xoutput = show_subscriber_list();
$xfile = fopen(\'xsubscriber.txt\' , "w") or die("Unable to open file!");;
fwrite($xfile,$xoutput);
fclose($xfile);
$filename = \'xsubscriber.txt\'; // of course find the exact filename....
header(\'Pragma: public\');
header(\'Expires: 0\');
header(\'Cache-Control: must-revalidate, post-check=0, pre-check=0\');
header(\'Cache-Control: private\', false); // required for certain browsers
header(\'Content-Type: application/pdf\');
header(\'Content-Disposition: attachment; filename="\'. basename($filename) . \'";\');
header(\'Content-Transfer-Encoding: binary\');
header(\'Content-Length: \' . filesize($filename));
readfile($filename);
exit;
The
show_subscriber_list
函数对数据执行SQL查询,通过查询返回的行获取循环中的所有数据。该函数以字符串形式返回该数据,该字符串用作
$filename
(如中所示
return $text_data;
).
这个$filename
存储在当前文件夹中。那么$filename
在$头文件中使用,它将文件作为下载/打开对话框提供给您。
重要的部分是在你做标题之前“构建”文件的内容。您可以同样轻松地将数据“构建”为字符串,然后执行标题内容。
Added
下面是一个函数,它以文本形式返回数据库内容。使用调用
$data = mysqli_query($conn, $sql);
$output = display_data($data); // text output used in the above function
function display_data($data) {
$output = "";
foreach($data as $row) {
$output .= $row["email"] . PHP_EOL ;
}
return $output;
}
请注意,正如OP的评论中所提到的,您需要设置文件内容所需的适当内容类型;我已将其设置为PDF格式。