我使用了MySQL INTO OUTFILE生成與SQL數據的文件。MySQL來OUTFILE問題PHP
$wpdb->query("SELECT * INTO OUTFILE 'result.sql' FROM ". DB_PHOTOS .";");
我現在想將文件下載到客戶端(與PHP)。由於它是一個WordPress插件,我不想特定位置(如c:/結果)。我如何使用PHP獲取該文件並下載它?
我使用了MySQL INTO OUTFILE生成與SQL數據的文件。MySQL來OUTFILE問題PHP
$wpdb->query("SELECT * INTO OUTFILE 'result.sql' FROM ". DB_PHOTOS .";");
我現在想將文件下載到客戶端(與PHP)。由於它是一個WordPress插件,我不想特定位置(如c:/結果)。我如何使用PHP獲取該文件並下載它?
形式MySQL手冊:
的SELECT ... INTO OUTFILE語句的目的主要是讓你很快地轉儲一個表來在服務器上的文本文件。如果你想創造一些其他主機比在服務器主機上生成的文件,你通常不能因爲沒有辦法寫,以相對於服務器主機的文件系統中的文件的路徑使用SELECT ... INTO OUTFILE。
含義,你可以將文件轉儲到一個特定的位置,如果你的PHP和MySQL是相同的本地計算機上,然後將文件移動到一個更好的位置或服務它直接對位的readfile()
喜歡如果DB和Web服務器位於不同的計算機上,這確實無法使用。要看你的目的是什麼,你可以在理論上通過system()調用本地生成的文件中使用mysql -e "SELECT ..." > file_name
,但它不是萬能無論是。
「臨時」目錄,可以在幾乎所有的託管服務提供商寫道。一種解決方案是寫入「/ tmp」(Linux)或%TEMP%(Windows)。
一旦做到這一點,PHP腳本可以流式傳輸文件到客戶端,並刪除流一次完成。
的問題是,我沒有控制主機。 mySql和PHP可以在同一個服務器上,不能! – 2011-04-20 10:38:55
是的,我明白,但重要的是,在... INTO OUTFILE文件將始終保存在MySQL服務器端(+許多主機可能不允許)。根據你的需要,你可以嘗試實現類似於我在編輯原始答案時所建議的內容。 – KillerX 2011-04-20 10:43:21