嘿伙计们,我正在尝试在我的脚本中导出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 to Patient姓氏 等等。使其在csv文件中看起来整洁可读。
我怎么能这样做?我已经尝试过几个代码:
$query = 'SHOW COLUMNS pat_id AS "user_id", pat_fname AS "first name", pat_lname AS "last name" FROM ' . $table;
但它没有奏效并发出错误。
答案 0 :(得分: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";
}
答案 1 :(得分:0)
由于您要处理许多表,因此请创建一个多维数组并在其中预定义字段名称。
像这样, $表[ '表1'] [1] = “”; $表[ '表1'] [2] = “”; $表[ '表2'] [1] = “”;
然后替换此块,
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field'] . ",";
$i++;
}
}
使用块从数组中获取表的字段名称。 这是唯一的方法。