2013-02-21 22 views
0

我遇到了使用fsgetcsv將文本文件導入數據庫的問題,這些問題源於名稱中帶有單引號字符的一些字段(愛爾蘭數據庫),字段被^字符轉義並且該位工作正常,但它基本上告訴我,當我的SQL語法到達具有'字符的字段時,我有一個錯誤。fsgetcsv無法用字段中的單引號解析文件

無論如何我可以解決這個問題嗎?我嘗試了各種組合的轉義字符,但無濟於事。

使用該工具在phpMyAdmin使用下列用語的工作,並不會造成問題導入文件:

場終止字符:^ 場封閉字符:「 場逃脫字符:汽車

:\ 一行結束

這裏是有問題的行的例子:

4^01^Patrick O'Brien^account Number^7Address^client contact^sales contact^Validity Check on appointment and report to Receiver^21/01/13^^^^^^^^^^^02 

這裏是fsgetcsv聲明

while (($data = fgetcsv($handle, 1000, "^")) !== FALSE) { 

回答

0

當您構建SQL語句以將行插入數據庫時​​,請確保已正確轉義fsgetcsv函數返回的值。您可以通過使用SQL參數(請參閱How can I prevent SQL injection in PHP?)或使用您正在使用的數據庫的內置函數進行轉義來完成此操作(請參閱http://www.php.net/manual/en/mysqli.real-escape-string.php)。

+0

這真的很有幫助,我只是簡單地更新了插入語句來遵循這個格式,它像一個魅力一樣工作。 '「.mysql_real_escape_string($ data [1])。'', 非常感謝:D – Funk247 2013-02-21 13:26:38