Как я могу поместить одно значение в один столбец с помощью fputcsv

#php #mysql #sql #csv

#php #mysql #sql #csv

Вопрос:

Я хочу экспортировать данные из базы данных в файл CSV.

Мой PHP-код выглядит следующим образом

 $members = Db::getResult('select * from '.MEMBERS_TABLE_NAME.' order by '.MEMBERS_COLUMN_PREFIX.'_lastname, '.MEMBERS_COLUMN_PREFIX.'_firstname');

    $fileName = "../db_user_export".".csv";
    $handle = fopen($fileName, 'w ');
    fputcsv($handle, array_keys($members[0]));
    foreach ($members as $member) {
        fputcsv($handle, $member);
    }//foreach
    fclose($handle);
 

Теперь результат, который я получаю в CSV, выглядит следующим образом:

«СТОЛБЕЦ A» «СТОЛБЕЦ B» «СТОЛБЕЦ C», «пароль, имя пользователя, имя файла», «фамилия, обновлено» «loggedin, is_new»

Но я хочу, чтобы это было так:

«СТОЛБЕЦ A», «СТОЛБЕЦ B», «СТОЛБЕЦ C», «пароль», «имя пользователя», «имя пользователя».

Любой, кто знает, как это сделать?

Ответ №1:

Не используйте select * , вместо этого выберите только те поля , которые вы хотите

Комментарии:

1. Ну, я хочу, чтобы ВСЕ значения были в CSV-файле, но это было слишком много, чтобы вводить здесь. Извините за путаницу. Проблема в том, что все значения содержатся в одном столбце. но я хочу, чтобы каждое значение было в новом столбце

Ответ №2:

Не выделяйте все поля, если вы хотите, чтобы в ваших выходных данных было только три из них:

 SELECT '.MEMBERS_COLUMN_PREFIX.'_password, '.MEMBERS_COLUMN_PREFIX.'_username, '.MEMBERS_COLUMN_PREFIX.'_firstname FROM '.MEMBERS_TABLE_NAME.' ORDER BY '.MEMBERS_COLUMN_PREFIX.'_lastname, '.MEMBERS_COLUMN_PREFIX.'_firstname'