Saya relatif baru di PHP jadi mohon bersabar.

Kode saya saat ini terlihat seperti ini:

<?php

require("database.php");

$localfile = "FileName.csv";
$fp = fopen($localfile, "w"); 
$enclosure = '"';
$delimiter = ',';

if(!$link)
{
    echo "DB Connection ERROR";
}

$query = "SELECT * FROM A_Table WHERE Stuff";

$result=mysqli_query($link,$query);

while($row = mysqli_fetch_assoc($result))
    {
        fputcsv($fp,$row,$delimiter,$enclosure);
    }

fclose($localfile);

?>

Ini berfungsi seperti yang diharapkan, namun, klien mengharuskan SEMUA bidang dibungkus dengan kutipan, bukan hanya yang berisi spasi. Saya telah melihat banyak solusi online tetapi semuanya tampak terlalu rumit atau sepertinya menyarankan agar saya mengedit CSV setelah diekspor.

Jika ini masalahnya maka saya akan bertahan tetapi apakah ada yang punya solusi yang relatif sederhana untuk dilema saya?

Contoh

Kode normal akan menampilkan: col1,col2,"col 3",col4

Saya ingin menampilkan: "col1","col2","col 3","col4"

Bantuan apa pun akan sangat dihargai.

Terima kasih sebelumnya, Paul

0
Paul Shears 19 November 2020, 14:01

1 menjawab

Jawaban Terbaik

Coba ini untuk inspirasi. Anda dapat mengganti argumen $row menjadi fputcsv() dengan baris array_map() yang Anda lihat di demo saya di sini:

<?php

// Sample values
$unquoted = ['these', 'are', 'some', 'unquoted', 'example', 'values'];

// One-liner to quote every array element and output to new array.
$quoted = array_map(function ($element) { return "\"$element\""; }, $unquoted);

var_dump($quoted);
/*
Output:
array(6) {
  [0]=>
  string(7) ""these""
  [1]=>
  string(5) ""are""
  [2]=>
  string(6) ""some""
  [3]=>
  string(10) ""unquoted""
  [4]=>
  string(9) ""example""
  [5]=>
  string(8) ""values""
}
*/
0
Ro Achterberg 19 November 2020, 11:07