gpt4 book ai didi

php - mysql 查询到 excel

转载 作者:行者123 更新时间:2023-11-29 08:21:41 26 4
gpt4 key购买 nike

社区,

我目前正在开发一个报告生成器。报告生成器的目标是发送一封包含 Excel 文档的电子邮件,其中包含来自 SQL 表的每周信息。当周一第一个人登录时,它就会被激活。如果周一是节假日,当天没有人登录,则数据库中不会创建时间戳。当用户周二登录时,它会查看最后的时间戳以查看是否在前一天放置了一个。如果没有,它将在周二启动。

这个过程的第一步看起来像这样......

$today = cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y"));
$yesterday = date('Y-m-d', strtotime($date .' -1 day'));
$holiday = false;
if(jddayofweek($today,1) == 'Tuesday')
{
if(mysql_num_rows(mysql_query("select report_date from report_builder where report_date = '{$yesterday}'")) == 0)
{
$holiday = true;
}
}
if(jddayofweek($today,1) == 'Monday' || $holiday === true)
{
$today = mysql_query("select report_date from report_builder where report_date = CURDATE()");
if(mysql_num_rows($today) == 0)
{
$date = date('Y-m-d H:i:s',time()-(7*86400));
mysql_query("INSERT into report_builder (report_date) VALUES (CURDATE())");

//这里有更多代码

**这篇文章的问题如下:

是否可以将信息发送到实际上并未打开以便用户查看的 csv 文件,而是将其保存到临时文件中?这可以通过不发送背景 html 的方式完成吗?**

完成此操作后,我想使用我当前的代码将文件发送给用户,如下所示...

require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->From = "**********";
$mail->AddAddress("*************");
$mail->Subject = "Test";
$mail->Body = "HI";
$fileName = $_FILES['file']['name'];
$tmpName = $_FILES['file']['tmp_name'];
$fileName = addslashes($fileName);
echo $fileName;
$mail->AddAttachment("temporary file path");
if(!$mail->Send())
{
echo 'Message was not sent.';
echo 'Mailer error:'.$mail->ErrorInfo;
}

最佳答案

是的,您当然可以将文件写入磁盘并以多种方式保存它。然而,如果您的应用程序服务器和 MySQL 位于同一物理主机上,我将向您指出一些可能是节省一些步骤的快速方法(即不必在 PHP 中创建文件)。当然,这是假设 CSV 文件合适(即您实际上不需要使用 PHP Excel 库来构建 XLS 或 XLSX 文件)

SELECT [fields] INTO OUTFILE '/path/to/file'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM your_table;

这将直接在计算机上的path/to/file位置创建一个 CSV,然后可以通过 PHP 发送。请注意,文件名不能是现有文件名,因为此方法不允许您覆盖现有文件。

如果您的 MySQL 主机是远程的或者您需要在写入文件之前操作数据,我建议您查看 fputcsv() ( http://php.net/manual/en/function.fputcsv.php ),以便从查询中写入数据直接保存为 CSV 格式的文件。

$file = fopen('/path/to/file.csv', 'w');

while ($row = [YOUR DATABASE FETCH HERE]) {
fputcsv($file, $row);
}

关于php - mysql 查询到 excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19230017/

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