#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'