2012-04-30 11 views
1

次の問題に取り組む最も良い方法は何ですか?私はクライアントに、CSV形式のデータベースからさまざまなレコードの範囲をダウンロードするオプションを提供する必要があります。私は次のことを考えていました。PHP/MYSQLを使用してCSVを即座にエクスポート/ダウンロードする

  1. DBから取得する行を決定するWebフォームをユーザーに提供します。
  2. 適切なレコードを引き出し、戻り値のデータから大きな文字列を作成します。
  3. ダウンロード用のCSVを作成するスクリプトに文字列を投稿します。

私は上記を試みる前に、これを行うより良い方法があるかどうか疑問に思っていましたか?

おかげで^ _^

答えて

2

あなたはすぐにCSVであなたの結果を得るために、MySQLのSELECT ... INTO OUTFILEを使用することができます。その後、そのCSVファイルの内容だけをユーザーに読み取らせるだけで済みます。

これは、自分でCSVを作成しようとするよりもはるかに安全です(フィールド区切り文字などを正しくエスケープする方法を検討する必要があります)。しかし、そのようにしたい場合は、一般的な落とし穴を避けるためにfputcsv(STDOUT, $results)を使用することをお勧めします。

+0

私はmysqlから直接行うことができるというアイデアが好きですが、結果ファイルをダウンロードするようにユーザーに促す方法はありますか? – cosmicsafari

+0

あなたのフォーム提出を扱うPHPスクリプトは、MySQLが出力するファイルに対して['readfile()'](http://php.net/manual/en/function.readfile.php)を呼び出すだけです。 MIMEタイプを適切に( 'text/csv')設定することを忘れないでください。ブラウザに強制的にウィンドウに表示するのではなく、ファイルを保存するように強制する場合は、' Content-disposition:attachment; filename = fooも設定してください。 csv'です。 – eggyal

+0

スマッシング私はこれをbashにすると思います。ありがとう^ _ ^ – cosmicsafari

関連する問題