2014-11-13 3 views
0

У меня есть база данных с двумя таблицами: core_members и core_fields_content.MySQL Query to CSV Formatting

core_members имеет столбцы: member_id, имя, адрес электронной почты core_pfields_content имеет столбцы: member_id, field_1, field_2 и т.д.

Я хотел бы выводить результаты запроса, который выбирает имена и электронные письма члены, в соответствии с настраиваемым значением поля, указанным в запросе, и экспортируют его в файл csv.

Я хочу, чтобы вывод отображался в столбцах, но при открытии в excel приведенный ниже код дает мне следующий вывод в одной ячейке: имя, адрес электронной почты; имя теста; [email protected];

Как я могу изменить код для вывода в столбцы с именем столбца в качестве заголовка?

<?php 

    $csv_fileName = 'forumuserlist_'.date('Y-m-d').'.csv'; 

    // database variables 
    $hostname = "localhost"; 
    $user = ""; 
    $password = ""; 
    $database = ""; 

    // Database connecten voor alle services 
    mysql_connect($hostname, $user, $password) 
    or die('Could not connect: ' . mysql_error()); 

    mysql_select_db($database) 
    or die ('Could not select database ' . mysql_error()); 

    $csv_export = ''; 

    $query = mysql_query("SELECT m.name, m.email FROM core_members m, core_pfields_content p WHERE m.member_id=p.member_id AND p.field_4='LPC'"); 
    $field = mysql_num_fields($query); 

    // create line with field names 
    for($i = 0; $i < $field; $i++) { 
     $csv_export.= mysql_field_name($query,$i).';'; 
    } 
    $csv_export.= ''; 
    while($row = mysql_fetch_array($query)) { 
     // create line with field values 
     for($i = 0; $i < $field; $i++) { 
     $csv_export.= $row[mysql_field_name($query,$i)].';'; 
     } 
     $csv_export.= ''; 
    } 

    // Export the data and prompt a csv file for download 
    header("Content-type: text/x-csv"); 
    header("Content-Disposition: attachment; filename=".$csv_fileName.""); 
    echo($csv_export); 
?> 
+0

проверить это: http://php.net/manual/en/function.fputcsv.php – vaso123

+0

Пожалуйста, [не использовать 'mysql_ *' функции] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), они больше не поддерживаются и [официально устарели] (https: //wiki.php.net/rfc/mysql_deprecation). Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://us1.php.net/pdo) или [MySQLi] (http: // us1.php.net/mysqli). Вы также захотите [Запретить SQL-инъекцию!] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+0

@JayBlanchard, если честно, я не хочу знаю, что я делаю, это код, который я нашел в Интернете, а затем написал свой собственный запрос! – lcheney

ответ

1

изменить разделитель; to (значения, разделенные COMMA => csv), и заключить имена столбцов и значения между двойными кавычками

+0

Замена; с, дает мне разные клетки, но все на той же строке имя \t \t электронной почты название теста \t [email protected] – lcheney

+0

Изменение '$ csv_export = '';..' 'до $ csv_export = "\ г \ п"; 'внутри цикла while – RichardBernards