2014-10-09 2 views
-1

Здесь мой php-скрипт для экспорта данных базы данных в CSV-файл.Экспорт базы данных в CSV с колонками PHP

Я не прихожу, чтобы добавить любую структуру, чтобы правильно упорядочить мои данные в моем CSV-файле.

Например, поместите все имена в столбце Имя, все сообщения электронной почты в столбце электронной почты ... и т.д.

include_once('conf.php'); 
include_once('BDD.php'); 

header('charset=UTF-8'); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 


$bdd = new BDD($conf['bddhost'], $conf['bddport'], $conf['bddname'], $conf['bdduser'], $conf['bddpass']); 
$sql = "SELECT * FROM user"; 
$qry = $bdd->prepare($sql); 

// Execute the statement 
$qry->execute(); 

$data = fopen('/tmp/db_user_export_".time().".csv', 'w'); 


while ($row = $qry->fetch(PDO::FETCH_ASSOC)) 
{ 
    // Export every row to a file 
    fputcsv($data, $row); 
    echo ''.$row['prenom'].' ' 
       .$row['nom'].' ' 
       .$row['email'].' ' 
       .$row['cp'].' ' 
       .$row['information'].' 
       '; 
} 
fclose($data); 
+0

В чем вопрос? Я понимаю, что существует языковой барьер, но трудно понять, что вы спрашиваете, или как ваш код не работает. – David

+0

'CSV -" значения, разделенные запятой "' ... где ваши запятые? Где ваши цитаты? В чем вопрос? – charlietfl

+0

вы можете активировать ошибки ('error_reporting (E_ALL); ini_set ('display_errors', 'On');') и проверить вывод 'fputcsv', который должен вернуть длину строки, написанной. Возможно, попробуйте удалить функции 'header(), чтобы помочь отлаживать. Возможно, это разрешение на запись в/tmp – Asenar

ответ

-2

Поскольку ваш результат является массивом, то это может помочь вам: Convert php array to csv string

if(!function_exists('str_putcsv')) 
{ 
    function str_putcsv($input, $delimiter = ',', $enclosure = '"') 
    { 
     // Open a memory "file" for read/write... 
     $fp = fopen('php://temp', 'r+'); 
     // ... write the $input array to the "file" using fputcsv()... 
     fputcsv($fp, $input, $delimiter, $enclosure); 
     // ... rewind the "file" so we can read what we just wrote... 
     rewind($fp); 
     // ... read the entire line into a variable... 
     $data = fread($fp, 1048576); 
     // ... close the "file"... 
     fclose($fp); 
     // ... and return the $data to the caller, with the trailing newline from fgets() removed. 
     return rtrim($data, "\n"); 
    } 
} 

$csvString = ''; 
foreach ($list as $fields) { 
    $csvString .= str_putcsv($fp, $fields); 
} 

Подробнее об этом на GitHub, функция, созданная @johanmeiring.

0

Вы не хотите использовать echo как вы создаете файл с ошибками fputcsv

while ($row = $qry->fetch(PDO::FETCH_ASSOC)) 
{ 
    // Export every row to a file 
    fputcsv($data, $row); 
} 

// reset the file pointer to the beginning of the file 
rewind($data); 

// dump the csv file and stop the script 
fpassthru($data); 
exit; 
0

Синтаксис:

$data = fopen('/tmp/db_user_export_".time().".csv', 'w'); 
       ^--     ^--  ^-- ^--- 

Вы смешивания строку со ссылкой стилей, поэтому ваше имя файла буквально собираются содержать символы ", ., t и т. д. в нем.

Попробуйте

$data = fopen('/tmp/db_user_export_' .time() .'.csv', 'w'); 
            ^----------^--- 

вместо этого. Обратите внимание, что изменение с " ->'.

Смежные вопросы