0

嘿伙计们,我正在尝试在我的脚本中导出一个 csv,它运行良好。现在我需要做的是在完全导出 csv 之前重命名列以清除名称和专有名称。

这是数据库表的图片:http: //i.imgur.com/aQrOZLk.png

这是代码:

include_once "config.php";

$table = 'patients'; // table you want to export
$file  = 'export'; // csv name.

$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 * FROM " . $table . "");

while ($rowr = mysql_fetch_row($values)) {
for ($j = 0; $j < $i; $j++) {
    $csv_output .= $rowr[$j] . ", ";
}
$csv_output .= "\n";
}

$filename = $file . "_" . date("d-m-Y_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;
?>

如您所见,它从此代码中获取表名:

$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++;
}
}

现在我要做的是允许它将数据库表从 pat_id 重命名为患者 ID pat_fname 为患者名字 pat_lname 为患者姓氏等等。为了使它在 csv 文件中看起来整洁和可读。

我怎么能做到这一点?我已经尝试了一些代码,例如:

$query = 'SHOW COLUMNS pat_id AS "user_id", pat_fname AS "first name", pat_lname AS "last name" FROM ' . $table;

但它没有工作并发出错误。

4

2 回答 2

1

您想在您的select而不是您的show columns.

尝试这样的事情,而不是SELECT *

   $query = "SELECT pat_id AS 'user_id', pat_fname AS 'first name', pat_lname AS 'last name' FROM table";

请注意,MySQL 希望您的列名显示在单引号中,而不是双引号中。

要将这些东西作为 csv 中的列标题处理......试试这个。

$values = mysql_query($query);
$i = mysql_num_fields($values);
for ($j = 0; $j < $i; $j++) {
   $csv_output .= mysql_field_name($j) . ", ";
}
$csv_output .= "\n";

while ($rowr = mysql_fetch_row($values)) {
  for ($j = 0; $j < $i; $j++) {
      $csv_output .= $rowr[$j] . ", ";
  }
  $csv_output .= "\n";
}
于 2013-06-30T20:26:42.620 回答
0

由于您要处理许多表,因此创建一个多维数组并在其中预定义字段名称。

像这样, $tables['table1'][1]=""; $tables['table1'][2]=""; $tables['table2'][1]="";

然后替换这个块,

if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field'] . ",";
$i++;
}
}

使用块从数组中获取表的字段名称。这是唯一的方法。

于 2013-06-30T20:25:58.427 回答