2012-04-30 1 views
1

Мне интересно, как лучше всего решить следующую проблему. Мне нужно предоставить клиенту возможность загружать различные диапазоны записей из базы данных в формате CSV. Я думал о том, чтобы сделать следующее.Экспорт/загрузка CSV на лету с использованием PHP/MYSQL

  1. Предоставьте пользователю веб-форму, чтобы определить, какие строки вытащить из БД.
  2. Потяните соответствующие записи и создайте большую строку из возвращаемых данных.
  3. Отправьте строку сценарию, который создает CSV для загрузки.

Прежде чем я попытаюсь выше, мне было интересно, есть ли лучший способ сделать это?

Спасибо^_^

ответ

2

Вы можете использовать MySQL, SELECT ... INTO OUTFILE немедленно получить результаты в CSV. Затем вам нужно только прочитать содержимое этого CSV-файла обратно пользователю.

Это намного безопаснее, чем пытаться построить CSV самостоятельно (где вы должны подумать о том, как правильно избежать полевых разделителей и т. Д.); однако, если вы хотите сделать это таким образом, я бы рекомендовал использовать fputcsv(STDOUT, $results), чтобы избежать распространенных ошибок.

+0

Мне нравится идея сделать это прямо из mysql, как бы вы предложили пользователю затем загрузить результирующий файл? – cosmicsafari

+0

Ваш PHP-скрипт, который обрабатывает представление формы пользователя, может просто вызвать ['readfile()'] (http://php.net/manual/en/function.readfile.php) в файле, выпущенном MySQL. Не забудьте установить MIME-тип соответствующим образом ('text/csv'), и если вы хотите заставить браузер запрашивать сохранение файла, а не просто отображать его в окне, также установите« Content-disposition: attachment; filename = foo. csv'. – eggyal

+0

Smashing Я думаю, что я дам это bash. Спасибо^_ ^ – cosmicsafari