【发布时间】:2016-02-17 08:34:32
【问题描述】:
我正在编写一个脚本,该脚本从三个表 (playlist, songs, rate) 中导出数据并将其放入一个 csv 文件中,它可以完美运行。
如果一列或多列为空或具有 null 值,它也会导出到 csv 文件并显示如下所示的空列:
所以我希望如果列是空的,那么这些列不会导出到 csv 文件中。我不知道我该怎么做。
注意:我只希望列为空而不是导出,而不是行
这是我在一个 csv 文件中导出三个表的代码。
$pre = $wpdb->prefix;
$link = mysqli_connect($mysql_host,$mysql_user,$mysql_pass,$mysql_db) or die('Could not connect: '.mysqli_error());
mysqli_select_db($link,$mysql_db) or die('Could not select database: '.$mysql_db);
$query = "SELECT plist.*, psong.*, prate.*
FROM " . $pre . "hmp_songs As psong
LEFT JOIN " . $pre . "hmp_playlists As plist
On plist.playlist_name = psong.song_playlist
LEFT JOIN " . $pre . "hmp_rating As prate
On psong.song_id = prate.rsong_id";
$result = mysqli_query($link,$query) or die("Error executing query: ".mysqli_error());
$row = mysqli_fetch_assoc($result);
$line = "";
$comma = "";
foreach($row as $name => $value){
$line .= $comma . '"' . str_replace('"', '""', $name) . '"';
$comma = ",";
}
$line .= "\n";
$out = $line;
mysqli_data_seek($result, 0);
while($row = mysqli_fetch_assoc($result)){
$line = "";
$comma = "";
foreach($row as $value)
{
$line .= $comma . '"' . str_replace('"', '""', $value) . '"';
$comma = ",";
}
$line .= "\n";
$out .= $line;
}
$csv_file_name = 'HMP_'.date('Ymd_His').'.csv'; # CSV FILE NAME WILL BE table_name_yyyymmdd_hhmmss.csv
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=".$csv_file_name);
header("Content-Description:File Transfer");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Type: application/octet-stream');
echo __($out,"hmp");
exit;
还有一件事:
完成后,空列不导出,文件导入 成功了吗?
【问题讨论】:
-
Thanx @vel 非常感谢你......看我的回答