[英]Exporting data from sql with php to excel
我正在尝试使用php将sql导出到csv,这是我设法做到的。 它在没有两件事的情况下运行良好:1.由于某些原因,在csv中输出的sql数据之前,我获得了当前页面的HTML代码。 2.如何更改表格标题行? 要重命名csv中的表标题列。
$result = $db->query("SELECT * FROM user_history WHERE member_id = '$user_id'");
$num_fields = $result->field_count;
$headers = array();
$headers[] = "Number";
for($i = 0; $i < $num_fields; $i++ ) {
$Obj = $result->fetch_field_direct($i);
$headers[] = $Obj->name."\t";
}
$current_date = date("y/m/d");
$filename = "MyFileName" . $current_date . ".csv";
$fp = fopen('php://output', 'w');
if ($fp && $result) {
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='.$filename);
header('Pragma: no-cache');
header('Expires: 0');
echo "Title of Your CSV File\n\n";
// Write mysql headers to csv
fputcsv($fp, $headers);
$row_tally = 0;
// Write mysql rows to csv
while ($row = $result->fetch_array(MYSQLI_NUM)) {
$row_tally = $row_tally + 1;
echo $row_tally.",";
fputcsv($fp, array_values($row));
}
die;
}
fetch_field_direct
返回没有__toString()方法的对象。 根据此您需要更改代码:
$header .= $result->fetch_field_direct($i)."\\t";
至:
$Obj = $result->fetch_field_direct($i);
$header .= $Obj->name."\t";
其次,如果您打印“ \\\\ t”,那么您实际上会得到\\ t。 print "\\t";
将给您制表符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.