gpt4 book ai didi

带有列名的 PHP MySQL 表到 CSV

转载 作者:行者123 更新时间:2023-11-29 04:44:50 32 4
gpt4 key购买 nike

我有以下 php 函数,可将表格输出到 CSV 文件。我还需要第一行中的列名。它可以工作,但是它有一个带有名称的列,然后是一个相同的列,但不是名称而是列号。我已经尝试了很多输出到 CSV 的解决方案,这个最适合我。但是对于我的一生,我无法弄清楚为什么我会得到重复的列。我喜欢这个解决方案,因为它简洁明了。这里还有其他解决方案。我想知道我可以让它工作吗?

我尝试使用查询,并使用“UNION ALL”,但它对我来说效果不是很好:

SELECT * INTO OUTFILE "c:/mydata4.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' FROM tickets

我认为效果最好的函数是:

public function tickets_to_csv() {

$query = $this -> db -> prepare("SELECT * FROM tickets");

try {
$query -> execute();
$data = $query -> fetchAll();
$fp = fopen('report.csv', 'w');
$column_names = array_keys($data[0]);
fputcsv($fp, $column_names);
foreach ($data as $row) {
fputcsv($fp, $row);
}
fclose($fp);
} catch(PDOException $e) {
die($e -> getMessage());
}

}

它创建了一个看起来像这样的文件

Column_1  |      0      | Column_2  |      1     |
Val_1-1 | Val_1-1 | Val_2-1 | Val_2-1 |
Val_1-2 | Val_1-2 | Val_2-2 | Val_2-2 |
Val_1-3 | Val_1-3 | Val_2-3 | Val_2-3 |

对我来说这应该没问题。

编辑:

这是我对@Jessicas 回答的解决方案,改为:

$data = $query -> fetchAll(PDO::FETCH_ASSOC);

另外,我编辑了这部分,为每一行创建了一个新行。否则在 excel 中看起来很好,但如果在记事本中打开,它就是一行。这是解决方案:

        $query -> execute();
$new_line = "\r\n";
$data = $query -> fetchAll(PDO::FETCH_ASSOC);
$fp = fopen('report.csv', 'w');
$column_names = array_keys($data[0]);
$column_names[] = $new_line;
fputcsv($fp, $column_names);
foreach ($data as $row) {
$row[] = $new_line;
fputcsv($fp, $row);
}

最佳答案

您需要将获取模式设置为仅关联,而不是两者。

http://www.php.net/manual/en/pdostatement.setfetchmode.php

PDO::FETCH_ASSOC (integer) Specifies that the fetch method shall return each row as an array indexed by column name as returned in the corresponding result set. If the result set contains multiple columns with the same name, PDO::FETCH_ASSOC returns only a single value per column name. http://www.php.net/manual/en/pdo.constants.php

关于带有列名的 PHP MySQL 表到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846843/

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