[英]PHP EXPORT MYSQL TO CSV - got column headers, can't get rest of data?
我似乎無法弄清楚為什么我的表數據不會出現在csv文件中。 我有一頁提交表單以開始導出過程。 使用excel打開文件時我得到正確的列標題...
謝謝您的幫助!!
if(isset ($_POST['submit'])) {
$host = "";
$user = "";
$password = "";
$db = "";
$con = mysql_connect("$host", "$user", "$password") or die("Couldn't connect to server.");
$db = mysql_select_db("$db", $con) or die ("Couldn't select database.");
$table = "wp_users";
function exportMysqlToCsv($table,$filename = 'content.csv') {
$csv_terminated = "\n";
$csv_separator = ",";
$csv_enclosed = '"';
$csv_escaped = "\\";
$query = "select * from $table";
$result = mysql_query($query);
$rowcount = mysql_num_fields($result);
$data = '';
for ($i = 0; $i < $rowcount; $i++) {
$l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,
mysql_field_name($result, $i)) . $csv_enclosed;
$data .= $l;
$data .= $csv_separator; }
$output = trim(substr($data, 0, -1));
$output .= $csv_terminated;
while ($row = mysql_fetch_array($result)) {
$data = '';
for ($j = 0; $j < $fields_cnt; $j++) {
if ($row[$j] == '0' || $row[$j] != '') {
if ($csv_enclosed == '') { $data .= $row[$j]; }
else { $data .= $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j]) . $csv_enclosed; } }
else { $data .= ''; }
if ($j < $rowcount - 1) { $data .= $csv_separator; } }
$output .= $schema_insert;
$output .= $csv_terminated; }
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " . strlen($output));
header("Content-type: text/x-csv");
//header("Content-type: text/csv");
//header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
echo $output;
exit;
}
exportMysqlToCsv($table);
}
問題似乎是您正在將CSV字符串分配給$data
變量,但沒有將其附加到$output
。 您需要這樣的一行:
$output .= $data;
之前:
$output .= $csv_terminated;
其次,我真的建議您修復代碼結構。 以目前的方式閱讀代碼非常困難。 閱讀PSR標准以獲取更多信息(或者有大量的體面標准)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.