如何在PHP/SQL生成的.csv电子表格中设置列名
我在网上找到了下面的脚本,并根据自己的需要对其进行了编辑,但有一件事我无法弄清楚,那就是如何更改列名。按原样,列名在电子表格中显示为数据库中相应列的名称。有没有办法改变这一点 谢谢你的建议! 这是我的密码:如何在PHP/SQL生成的.csv电子表格中设置列名,php,mysql,csv,export,spreadsheet,Php,Mysql,Csv,Export,Spreadsheet,我在网上找到了下面的脚本,并根据自己的需要对其进行了编辑,但有一件事我无法弄清楚,那就是如何更改列名。按原样,列名在电子表格中显示为数据库中相应列的名称。有没有办法改变这一点 谢谢你的建议! 这是我的密码: <?php $host = 'asdf'; $user = 'asdf'; $pass = 'asdf'; $db = 'asdf'; $table = 'stats'; $file = 'export'; $fields = "date, name, time, inbse
<?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;
?>
列名来自CSV输出的第一行 20号线附近:
$csv_输出。=$row['Field']。”,“
只需删除该代码块,然后输出一行您希望的列名:
“列名1,列名2,列名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文件的列名,并将其作为文件的第一行。工作完成。选择时应使用“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 |
如果我使用
select username from people where id=1;
this returns
|username|
|alpera |
select username as user from people where id=1;
this returns
|user |
|alpera |
我希望这就是您想要的。生成标题行的行是:
$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";
因此,若要按照您的意愿在标题行中添加标题,您需要修改此代码。
如果您不需要,它也将为您保存一个数据库查询有办法吗?:有。还有更大的改进空间吗有。还有问题吗?谢谢,伙计,但这对我设置要导出的字段没有帮助。使我不必导出所有这些文件。正如我所说,我在网上找到了剧本,并尽我所能进行了编辑。我还在学习。我不是在找你的麻烦,我给了你一个建议:不要复制和粘贴,而是写你自己的。您仍然可以复制,但可以自己键入。你会发现,即使你可能会认为“我正在输入一些我不完全理解的东西”,你的大脑也能更好地管理它。它不适合复制和粘贴那么好。我还需要这个吗。在前面=?我还在学习,我不太明白为什么会这样?把16-24线的整个街区都移走。将其替换为列名的简单输出。仅供参考,.=将字符串与附加值连接,而=为可能遇到此问题的任何其他人指定一个新值。。输出实际数据的底部部分取决于第26-24行之间代码的某些部分。我是一个noob,所以我还不确定是什么,但我通过删除行
$csv\u output.=$row['Field'],“
并将其放在该部分前面的第24行\n
解决了问题。。我相信这不是最健康的方法,但它最终还是奏效了。。