-6ren">
gpt4 book ai didi

php - fputcsv 不在 CSV 文件中写入任何数据

转载 作者:行者123 更新时间:2023-12-02 00:19:33 26 4
gpt4 key购买 nike

在我的网站上,我正在从 mysql 数据创建一个表,然后现在我想在该表的按钮上添加一个导出按钮,以便用户能够将数据下载为 CSV 文件。

为此,我编写了虚拟表单:

<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
<input type="submit" name="submit" value="Click Me">
</form>

在 php 文件的顶部我有:

if(isset($_POST['submit'])) {
export();
}

在我的导出函数中,我有一些 mysql 的东西,我正在创建一个数组并将数据推送到其中,然后:

$header = array('name', 'date', 'total', 'success', 'opens', 'clicks', 'success_rate', 'open_rate', 'CTO', 'CTR')
$fp = fopen('exportme2.csv', 'w');
fputcsv($fp, $header);

foreach ($data as $lines) {
fputcsv($fp, $lines);
}
fclose($fp);

单击“导出”按钮后,我将得到 exportme2.csv 文件,但它是空的!数据可能是错误的,所以不会有任何东西,但至少我应该有标题名称。

你能帮我解决这个问题吗?

谢谢。

最佳答案

首先,改变

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

$fp = fopen('exportme2.csv', 'a');

作为 'w' 截断 文件,其中 'a' 创建或追加 文件。

那么你应该使用 flock() 来确保两个不同的用户(线程)不会同时尝试写入文件:

if (!flock($fp, LOCK_EX)) {
error_log('Cannot get lock!');
} else {
fputcsv($fp, $header);

foreach ($data as $lines) {
fputcsv($fp, $lines);
}
}

如果这不能解决问题,那么你的代码中有一个对我来说不明显的拼写错误。

关于php - fputcsv 不在 CSV 文件中写入任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11549414/

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