我有一个CSV导出脚本,用于抓取某个表中的某些字段及其值,并使用该数据创建一个Excel文件。见下面的脚本。
首先获取列名称(ID除外)。 其次,它将获取firstname,lastname,employee_id,unit和present的值,并将所有这些值放在Excel文件中。
现在请注意,它会从表中获取数据:table_info 在此表中,UNIT和PRESENT仅存在数字。这些数字代表另外两个表中单位/现在的ID:
table_units(id,title) table_presents(id,title)
我想要的是,在Excel表格中,它不显示单位/现在的数字(id),而是单位/现在的标题。我怎么能做到这一点?我的PHP知识就在这里停止。
$table = 'table_info';
$file = 'export';
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
if($row['Field'] != 'id'){
$csv_output .= $row['Field']."; ";
$i++;
}
}
}
$csv_output .= "\n";
$values = mysql_query("SELECT firstname, familyname, employee_id, unit, present FROM ".$table."") or die(mysql_error());
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;
答案 0 :(得分:0)
更改您的sql查询以执行包含table_units和table_presents的连接。或者,如果您担心连接会导致性能瓶颈,您可以将table_units和table_presents存储在由ID键控的数组中,当您拥有foriegn键时可以引用它(unit_id,present_id)。
答案 1 :(得分:0)
不确定您使用;
代替,
的原因,
以下是我发现的问题: -
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
==>
$result = mysql_query("SHOW COLUMNS FROM ".$table." WHERE Field!='id'");
// so, it would skip column id
所有for ($i ... )
都没有必要,并且每行都有额外的;
,
做一个内爆: -
$csv_output .= $row['Field']."; ";
==>
$csv_output .= implode(';', $row);