PHP / MySQLi excel导出没有列标题

我有一些我用来导出到Excel使用MySQL的代码。 我将语法切换到MySQLi,它的工作原理除了不在Excel中打印列标题。

我是MySQLi的新手,请原谅我。

这里是代码(我会尽量省略不必要的代码):

<?php include("../include/database.php"); global $ts; $ts = date('mdY-His'); session_start(); $where = $_SESSION['where']; $sql = "SELECT * FROM `main_table` WHERE " . $where . ""; $result = mysqli_query($dbc, $sql) or die(mysqli_error()); header("Content-Type: application/xls"); header("Content-Disposition: attachment; filename=importdetails-".$ts.".xls"); header("Pragma: no-cache"); header("Expires: 0"); header("Content-Transfer-Encoding: binary "); // here is the formatting for Excel $sep = "\t"; //tabbed character // printing the column names for ($i = 0; $i < mysqli_num_fields($result); $i++) { echo mysqli_fetch_field($result,$i) . "\t"; } print("\n"); // I believe the error is in the FOR loop above // Here is the remaining code while($row = mysqli_fetch_row($result)) { $schema_insert = ""; for($j = 0; $j < mysqli_num_fields($result); $j++) { if(!isset($row[$j])) $schema_insert .= "NULL".$sep; elseif ($row[$j] != "") $schema_insert .= "$row[$j]".$sep; else $schema_insert .= "".$sep; } $schema_insert = str_replace($sep."$", "", $schema_insert); $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); $schema_insert .= "\t"; print(trim($schema_insert)); print "\n"; } ?> 

使用上面的代码,我可以得到它导出一个Excel文档,但没有列标题。 在FOR循环中,在ECHO语句中,我有mysql_field_name,所以我将它切换到mysqli_field_name,只实现mysqli_field_name不存在。 所以我用了mysqli_fetch_field。

有没有人看到为什么我没有得到Excel列名称?

**********编辑 – 这是什么为我工作***********

  <?php include("../include/database.php"); global $ts; $ts = date('mdY-His'); session_start(); $where = $_SESSION['where']; $sql = "SELECT * FROM `vsl_profile` WHERE " . $where . ""; header("Content-Type: application/xls"); header("Content-Disposition: attachment; filename=importdetails-".$ts.".xls"); header("Pragma: no-cache"); header("Expires: 0"); header("Content-Transfer-Encoding: binary "); $sep = "\t"; //tabbed character if($result = $dbc->query($sql)) { while($finfo = $result->fetch_field()) { printf($finfo->name . $sep); } } print("\n"); while($row = mysqli_fetch_row($result)) { $schema_insert = ""; for($j = 0; $j < mysqli_num_fields($result); $j++) { if(!isset($row[$j])) $schema_insert .= "NULL".$sep; elseif ($row[$j] != "") $schema_insert .= "$row[$j]".$sep; else $schema_insert .= "".$sep; } $schema_insert = str_replace($sep."$", "", $schema_insert); $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); $schema_insert .= "\t"; print(trim($schema_insert)); print "\n"; } ?> 

我相信mysql_fetch_field只有一个参数。

尝试像这样:

 while ($finfo = mysqli_fetch_field($result)) { echo $finfo->name; } 

采取从这页doc页面: http : //php.net/manual/en/mysqli-result.fetch-field.php