Mysql
 sql >> Database >  >> RDS >> Mysql

come sfuggire al delimitatore dal contenuto della colonna durante l'esportazione csv

Basta usare fputcsv si occupa dell'escape e della produzione di dati csv corretti.

<?php

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);
?>

Uscita:

aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""

Modifica

Puoi sempre utilizzare una combinazione di tmpfile per aprire un file che verrà automaticamente cancellato alla fine della richiesta, scrivici sopra e poi dopo aver creato il rapporto emetti il ​​suo contenuto con fread . Devi usare fread poiché tmpfile restituisce una risorsa, altrimenti puoi usare tempnam + file_get_contents ma in tal caso devi aprire il file e ripulirlo dopo averlo letto da solo.