fputcsvを使用してcsvファイルに書き込もうとしていますが、文字列が長すぎると失敗するようです。
fputcsvには書き込み時に制限がありますか?
trim()
保存する前に!私はそれを解決するためにいくつかのことを試みました(stripslashes()など)。手動で fputcsv($fp, 'too loooooooooooo...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 内で trim($value) することを忘れないでください!