【问题标题】:fputcsv fails if string to long如果字符串变长,fputcsv 失败
【发布时间】:2013-03-18 10:39:42
【问题描述】:

我正在尝试使用 fputcsv 写入 csv 文件,但当字符串太长时它似乎会失败。

fputcsv 写入时有限制吗?

【问题讨论】:

  • 您要保存的数据多长时间?列数、最长元素、最长行、整体大小?
  • fputcsv() 期望写入一个数组而不是一个字符串......并且没有长度限制......显示代码
  • 这里是代码pastebin.com/xjF3ARCm
  • 当它为 'w' 打开时,你真的能从 php://output 中 fread() 吗?

标签: php csv fputcsv


【解决方案1】:

trim() 保存前! 我尝试了一些方法来解决它(比如 stripslashes() 等等)。 当我手动添加 fputcsv($fp, 'too loooooooooooooo...ong string') 时,它起作用了。 然后我查看了对于这个函数来说太长的 db 字段,并在值前面发现了一些空格。 所以这里是代码:

function get_items($db_handler) {
$array = array();
$query = "SELECT * FROM `db` WHERE <some condition>";
    $result = mysqli_query($db_handler, $query);
$i = 0;
while ($row = mysqli_fetch_assoc($result)) {    
     foreach ($row as  $key => $value) $array[$i][$key] = trim($value);
         $i++;  
}
mysqli_free_result($result);
return $array;
}
// now we put records into csv from the assoc array returned by get_items():

$items = get_items($db_handler);
$fp = fopen($file, 'a+');
foreach ($items as $fields) //
{
     fputcsv($fp, $fields);
} 
fclose($fp);

不要忘记在函数的 foreach 内部修剪($value)!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多