我有一個問題,導出BLOB到一個CSV文件使用PHP。顯然blob不是一個正常的字段,但它偶爾會被使用。但這裏是我需要的,我需要這個腳本通過獲取表格數組並以csv格式導出每一行來工作。 Blob搞砸了。我試過對blob進行base64_encode,但我相信會錯誤地導出blob。MySQL導出爲CSV與blob字段
這是我到目前爲止有:
function exportcsv($tables) {
foreach ($tables as $k => $v) {
$fh = fopen('sql/'.$v.'.csv', 'w');
$sql = mysql_query("SELECT * FROM $v");
while ($row = mysql_fetch_row($sql)) {
$line = array();
foreach ($row as $key => $v) {
$line[] = base64_encode($v);
}
fputcsv($fh, $line, chr(9)); //tab delimiting
}
fclose($fh);
}
}
任何幫助,將不勝感激。
編輯:這是blob導出沒有base64_encode()的圖像。 https://www.strongspace.com/shared/crypok1lxb
那麼,base64會在需要重新導入時保護blob的格式嗎?
不應該使用base64_decode嗎?我不是BLOBS的專家,但我相信你不想編碼它看到真正的文本,如果你按照我的意思.. –
你可能會顯示你有輸出的樣本,以便我們可以看到什麼是錯的? –
呵呵。對不起,blob只是二進制(好的,加密的密碼)。所以無論如何它對於任何類型的輸出都是不可讀的。但是base64_encode()的目標是讓所有的fputcsv()工作,因爲blob具有blob字段會損害導出的所有類型的隨機字符,因爲它包含\ r \ t和\ n's。所以編碼可以防止這些奇怪的問題,並且確實阻止了它們。 – frustratedtech