2013-04-07 57 views
-1

我試圖從phpmyadmin數據庫下載'.csv',但是下載了一些空白文件。 相同的查詢在phpmyadmin中完美適用於sql。下面是代碼:從sql數據庫下載.csv文件時出錯

function get_csv() 
{ 
$filename="c:/mydata.csv"; 
$var=mysql_query("SELECT * INTO OUTFILE $filename FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY \"\n\" FROM course"); 
header("Content-type: text/plain"); 
header("Content-Disposition: attachment; filename=$filename.xls"); 
header("Content-Transfer-Encoding: binary"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
//print "$header\n$data"; 
return 0; 
} 

在取消對打印語句,我得到了一些錯誤顯示一個文件:

<br /> 
<b>Notice</b>: Undefined variable: header in <b>C:\xampp\htdocs\SEN_PROJECT_Latest\SEN-PROJECT\class\database.php</b> on line <b>485</b><br /> 
<br /> 
<b>Notice</b>: Undefined variable: data in <b>C:\xampp\htdocs\SEN_PROJECT_Latest\SEN-PROJECT\class\database.php</b> on line <b>485</b><br /> 
+0

哪裏是$在函數定義的數據? – Sabari 2013-04-07 07:23:56

+0

我還沒有和nwebie我不知道如何使用它。 – 2013-04-07 07:28:37

+0

您正在打印「$ header \ n $ data」; 。那麼這個$數據來自哪裏?如果你想輸出mysql查詢的結果。添加一個while循環來獲取數據並輸出 – Sabari 2013-04-07 07:30:14

回答

0

我猜你試圖下載CSV文件,無需依賴其他變量在這個函數之外,只需使用readfile()就可以看到正在下載的文件。

function get_csv() 
{ 
    $filename="c:\\mydata.csv"; 
    $var=mysql_query("SELECT * INTO OUTFILE $filename FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY \"\n\" FROM course") or die(mysql_error()); 
    header("Content-type: text/plain"); 
    header("Content-Disposition: attachment; filename=$filename.xls"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    ob_clean(); 
    flush(); 
    readfile($filename); 
    return 0; 
} 

如果該代碼沒有下載該文件,您可以檢查c:/mydata.csv並查看它是否已創建。

+0

我使用了確切的但下載的文件包含一些警告說:警告:readfile(c:/mydata.csv)[function.readfile]:無法打開流:沒有這樣的文件或目錄在C:\ XAMPP \ htdocs中\ SEN_PROJECT_Latest \ SEN-PROJECT \類\上線database.php中
2013-04-07 07:42:28

+0

使用更新的代碼,我改變'C:/ mydata.csv'到'C:\\ mydata.csv',你也應該在調用該函數之前連接到數據庫。 – 2013-04-07 07:44:49

+0

我也是這樣做的,但仍然沒有運氣。 – 2013-04-07 07:56:03

0

INTO OUTFILE的文件名必須是字符串文字:

"SELECT * INTO OUTFILE '$filename' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY \"\n\" FROM course"