我正在向WordPress網站添加一個下載按鈕,該網站將查詢我們的數據庫,並以CSV的形式提供結果。爲什麼fputcsv會產生重複列?
一切正常,除了CSV產生有它返回的每一列重複的列。
我們已經檢查了SQL查詢,它不會有重複。
下面是我們如何生成CSV:
$rows = //Call to SQL query function
$fp = fopen('php://output', 'w');
fputcsv($fp, array_keys($rows));
foreach ($rows as $row) {
fputcsv($fp, $row);
}
$filename = "EventResults.csv";
header('Content-Type: text/csv');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=$filename");
我們打開SQL返回到一個PHP數組是這樣的:
$sql = "SELECT * FROM TABLE";
$statement = $this->db->prepare($sql);
$statement->execute();
return $statement->fetchAll();
結果是這樣的:
Lance,Lance,Armstrong,Armstrong,DEX,DEX,70,70,1,1,60,60,SEC,SEC,"10; 20; 30; 40","10; 20; 30; 40"
當它們應該看起來像這樣:
Lance,Armstrong,DEX,70,1,60,SEC,"10; 20; 30; 40"
什麼導致重複,我們如何擺脫它們?
也許你'使用一個函數來獲取記錄,該函數將數字鍵和列名作爲鍵返回它們? – Maerlyn
好的,仔細看看$ row後,看起來你是對的。但是,我們不知道如何避免這種情況。有沒有辦法忽略這些值?我們可以刪除它們嗎?阻止他們被放入數組中?你將如何處理這個問題? –
我同意@Maerlyn,在php中查詢數據庫的一些函數/庫可以將結果集作爲關聯數字和數字索引數組,這可能會導致問題。瞭解您如何檢索結果集會很有幫助。 –