2012-02-08 43 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

是的,現在沒有更多的細節,這是你得到的。 – 2012-02-08 03:15:57

+0

是的,這是可能的。在這種情況下,您必須以編程方式生成特定的SQL語句。 – 2012-02-08 03:16:40

+0

如何以編程方式生成SQL語句? – codingNewbie 2012-02-08 03:25:42

回答

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

當我嘗試使用它時,我在fieldlist中得到了 - unknown列作者 - 錯誤。此外,我以前使用這種類型的查詢: $ query = sprintf(「select x from y」); – codingNewbie 2012-02-08 23:55:56

+0

這不起作用:( – codingNewbie 2012-02-11 17:39:51

+0

確定它的工作原理:D:D謝謝你! – codingNewbie 2012-02-11 18:19:04