PHP MySQL спецификация запроса c поля в CSV - PullRequest
1 голос
/ 09 мая 2020

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

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

header('Content-Type: text/csv; charset=utf-8');  
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen("php://output", "w");  
fputcsv($output, array('ID', 'Name', 'Country', 'Province/City' 'Address', 'Gender', 'Track', 'Payment Option'));, 
$sql = "SELECT * FROM STUDENTINFO order by GRADELEVEL";
$result = $conn->query($sql);

if ($result->num_rows > 0) 
  {
   while($row = $result->fetch_assoc()) 
      {
       fputcsv($output, $row);    
       }
fclose($output);

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

if ($result->num_rows > 0) 
      {
       while($row = $result->fetch_assoc()) 
          {
          $name = $row['FIRSTNAME']." ".$row['MIDDLENAME']." ".$row['LASTNAME'];
          $gradelevel = glvlDESCRIPTION(row['GRADELEVEL']);

          if ($row['TRACK'] == "AW")
             {
              $track = "A With Activities";
             }
           else
             {
              $track = "A Without Activities";
             }
           fputcsv($output, $row['STUDENTID'], $name, $row['COUNTRY'], $row['PROVINCE'], $row['ADDRESS'], $track...);    
           }
    fclose($output);

1 Ответ

4 голосов
/ 09 мая 2020

fputcsv ожидает массив для второго параметра, поэтому вы можете либо построить данные заранее, либо просто добавить [] вокруг данных в вызове, чтобы передать их как массив ...

fputcsv($output, [ $row['STUDENTID'], $name, ... ])
...