我正嘗試使用php將.pdf文件上傳到mysql數據庫。PHP MYSQL文件內容轉義問題
這是除了文件的內容都很好。無論我如何設法逃避特殊字符,查詢總是失敗,主要是「未知命令\ n」。
我已經使用和addslashes,mysql_real_escape_string,removeslashes等
有沒有人對如何逃生文件內容有任何想法?
非常感謝,
我正嘗試使用php將.pdf文件上傳到mysql數據庫。PHP MYSQL文件內容轉義問題
這是除了文件的內容都很好。無論我如何設法逃避特殊字符,查詢總是失敗,主要是「未知命令\ n」。
我已經使用和addslashes,mysql_real_escape_string,removeslashes等
有沒有人對如何逃生文件內容有任何想法?
非常感謝,
我用下面的序列之前,這似乎很好地工作,並且將所有數據存儲到數據庫,包括圖像,PDF,數據陣列,等... :)
存儲數據(可以是字符串,數組,對象等);
首先,將數據轉換base64編碼串
$strData = strtr(
base64_encode(
addslashes(
gzcompress(serialize($dataToStore) , 9)
)
) , '+/=', '-_,');
然後存儲在分貝該字符串數據...
檢索所述數據;
從數據庫中提取字符串數據
解碼的數據恢復到你想要的東西(你可能需要這個依賴於輸入數據,陣列,圖像後執行額外的步驟等)
$returnData = unserialize(
gzuncompress(
stripslashes(
base64_decode(
strtr($strDataFromDb, '-_,', '+/=')
)
)
)
);
這當然讓我來存儲我需要的東西在MySQL數據庫存儲!
只是要清楚... [在閱讀了上面的內容之後,我意識到我的酒有點太多:)] 你想要存儲上述數據的db字段可以只是一個純文本字段,base64編碼將輸出轉換爲標準文本字符。 我不確定我在哪裏發現了這個代碼,所以我不能完全贊同它,但它確實是我所要求的...... – 2009-12-08 00:22:57
我使用了這種技術和準備好的陳述技術的組合,創造奇蹟並解決我的問題!非常感謝! – Michael 2009-12-09 18:02:31
我不明白爲什麼你想存儲在數據庫中的文件,但我建議你看一看prepared statements。
猜一下,你可能會遇到錯誤,由於字符集之間的不兼容性。 PDF可能是一個二進制文件,所以你需要確保db列被設置來處理它。
是的,我試過blob,大/大blob和二進制。逃避似乎是問題所在。 – Michael 2009-12-07 19:03:47
旁邊如果(MySQL的)系統變量max_allowed_packet被設置爲「小」的價值,你可能會遇到「包過大」的錯誤逃避問題。
使用mysqli擴展,準備好的語句和mysqli_stmt::send_long_data可以避免這兩個問題。
我將不得不考慮這一點,希望它被限制在小文件中,這不應該發生。我總是可以將它設置爲更大的數據包。 – Michael 2009-12-07 19:03:06
我認爲你必須顯示代碼和SQL這一個。 – 2009-12-07 18:40:39