-1

我在网上找到了以下脚本并根据需要对其进行了编辑,但我无法弄清楚的一件事是如何更改列名。按原样,列名在电子表格中显示为数据库中相应列的名称。有没有办法改变这个?

感谢您的任何建议!这是我的代码:

<?php
$host = 'asdf';
$user = 'asdf';
$pass = 'asdf';
$db = 'asdf';
$table = 'stats';
$file = 'export';

    $fields = "date, name, time, inbset, asapset, faxset, obset, totset, inbclo, asapclo, faxclo, obclo, totclo, inbtot, asaptot, faxtot, obtot, total, comments";

$filename = $file."_".date("Y-m-d");

$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error());
mysql_select_db($db) or die("Can not connect.");

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field'].", ";
$i++;
}
}
$csv_output .= "\n";

$values = mysql_query("SELECT $fields FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j].", ";
}
$csv_output .= "\n";
}

$filename = $file."_".date("Y-m-d_H-i",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$filename.".csv");
print $csv_output;
exit;
?>
4

4 回答 4

3

你那里的代码——可能是复制和粘贴而不是你自己编写和理解的——是精神分裂的。

一方面,它确实在顶部定义了列名:

    $fields = "date, name, time, inbset, asapset, faxset, obset, totset, inbclo, asapclo, faxclo, obclo, totclo, inbtot, asaptot, faxtot, obtot, total, comments";

另一方面,它从数据库中读取它们:

$result = mysql_query("SHOW COLUMNS FROM ".$table."");

我建议您创建第二个变量,其中仅包含 CSV 文件的列名,并将其作为第一行放入文件中。任务完成。

于 2012-08-14T23:17:34.880 回答
2

列名来自 CSV 输出中的第一行。

第 20 行附近: $csv_output .= $row['Field'].", ";

只需删除该代码块,并根据需要输出一行列名:“Column Name 1, Column Name 2, Column Name 3, ...”

于 2012-08-14T23:15:46.720 回答
1

产生标题行的行是:

$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field'].", ";
$i++;
}
}
$csv_output .= "\n";

因此,要按照您的意愿排在标题行的前面,您需要修改此代码。如果您不需要它,它也会为您节省数据库查询

于 2012-08-14T23:17:58.020 回答
0

您应该在选择时使用“AS”。

例如我有一张桌子人:

id,username,name,birth
1,alpera,aykutalper,1985

如果我使用

select username from people where id=1;
this returns
|username|
|alpera  |

如果我使用

select username as user from people where id=1;
this returns
|user    |
|alpera  |

我希望这就是你想要的。

于 2012-08-14T23:17:44.103 回答