【发布时间】:2011-11-22 02:01:21
【问题描述】:
我在使用 php 将 BLOB 导出到 csv 文件时遇到问题。显然 blob 不是一个普通的字段,但它偶尔会被使用。但这就是我需要的,我需要这个脚本通过获取一个表格数组并以 csv 格式导出每一行来工作。 Blob 搞砸了。我尝试对 blob 进行 base64_encode,但我相信这会错误地导出 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);
}
}
任何帮助将不胜感激。
编辑:这是没有 base64_encode() 的 blob 导出图像。 https://www.strongspace.com/shared/crypok1lxb
那么,当需要重新导入时,base64 会保护 blob 的格式吗?
【问题讨论】:
-
你不应该使用 base64_decode 吗?我不是 BLOBS 方面的专家,但如果你按照我的意思进行操作,我相信你不想对其进行编码以查看真实文本..
-
您能否展示一下您的输出示例,以便我们查看问题所在?
-
呵呵。抱歉,blob 只是二进制(嗯,加密的密码)。所以无论如何,任何类型的导出都是不可读的。但是 base64_encode() 的目标是让所有 fputcsv() 工作,因为 blob 具有所有类型的随机字符,blob 字段会损坏导出,因为它包含 \r \t 和 \n's。所以编码可以防止这些奇怪的问题,而且确实可以防止它们。
-
好的,我明白了,但是当您说“我相信这会错误地导出 blob”时,您是什么意思。 ?如果您可以详细说明您对代码的期望以及它实际为您提供的内容,那么也许我可以帮助您:)
-
谢谢丹妮。添加图像以显示我在说什么。那是没有base64的。所以我最大的问题是,base64 会正确编码任何字符并正确解码吗?因为 blob 是任何东西的混合物。