2012-02-08 22 views
0

私はPHPを使ってCSVにエクスポートし、mySQLに問い合わせてCSVを読み込む方法を知っています。しかし、ユーザにどのカラムを選択させて、それに応じてSQLクエリを変えることが可能ですか?PHPを使用して変数列をCSVファイルにエクスポートするにはどうすればよいですか?

私はデータベースへの接続を確立している、である私のクエリを追加しました:

$query = sprintf("SELECT x, y, z from a"); 
$result = mysql_query($query, $conn) or die(mysql_error($conn)); 
header('Content-Type: text/csv'); 
header('Content-Disposition: attachment;filename=export.csv'); 
$row = mysql_fetch_assoc($result); 
if ($row) 
{ 
echocsv(array_keys($row)); 
} 
while ($row) 
{ 
echocsv($row); 
$row = mysql_fetch_assoc($result); 
} 
function echocsv($fields) 
{ 
$separator = ''; 
foreach ($fields as $field) 
{ 
    if (preg_match('/\\r|\\n|,|"/', $field)) 
    { 
    $field = '"' . str_replace('"', '""', $field) . '"'; 
    } 
    echo $separator . $field; 
    $separator = ','; 
} 
echo "\r\n"; 
} 
+2

はい、今すぐ詳細を確認してください。 –

+0

はい、可能です。その場合、プログラムによって特定のSQL文を生成する必要があります。 –

+0

SQL文をプログラム的に生成するにはどうすればよいですか? – codingNewbie

答えて

2

はい、それはです。ユーザーがエクスポートするフィールドを選択するフォームを作成する必要があります。私は、取得可能なすべての可能性のあるデータベースフィールドをリストするチェックボックスリストを考えており、ユーザーの選択に従ってクエリを作成します。 Ej:

<form action="" method="post"> 
    <label><input name="fields[]" type="checkbox" value="name"> Username</label> 
    <label><input name="fields[]" type="checkbox" value="birthdate"> Birthdate</label> 
</form> 

次に、サーバー側でデータベースクエリを作成します。

$sql = "SELECT `". implode("`, `", $_POST["fields"]) ."` FROM db_table"; 

このヘルプが必要です。

+0

これを使ってみると、フィールドリストエラーで不明な列の作者が見つかりました。また、以前このタイプのクエリを使用しました: $ query = sprintf( "select x from y"); – codingNewbie

+0

これは動作しません:( – codingNewbie

+0

okそれは動作します:D:Dありがとうございます! – codingNewbie

関連する問題