Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP/SQL生成的.csv电子表格中设置列名_Php_Mysql_Csv_Export_Spreadsheet - Fatal编程技术网

如何在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
解决了问题。。我相信这不是最健康的方法,但它最终还是奏效了。。