1
導入包含單引號的csv文件時遇到問題。在我的csv文件中,有一些數據帶有單引號(撇號)。如何解決csv文件導入中的單引號錯誤?
"User's answer","answer one","answer two","answer three".
我使用逗號(,)來分隔我csv中的列。 當我嘗試將數據導入數據庫時,它顯示錯誤。這是我的代碼。
while(($data=fgetcsv($handle,1000,",")) != FALSE){
$id = $data[0];
$name = $data[1];//User's name
$sql = "UPDATE my_table SET name='$name' WHERE id='$id'";
mysql_db_query($dbname, $sql)or die("update error".mysql_error());
}
上面的代碼顯示sql語法錯誤。如果我從csv文件中刪除單引號(')並導入,則一切正常。但某些數據將來可能包含單引號(')。所以,我想補充mysql_real_escape_string
到$name
這樣
while(($data=fgetcsv($handle,1000,",")) != FALSE){
$id = $data[0];
$name = mysql_real_escape_string($data[1]);//User's name
$sql = "UPDATE my_table SET name='$name' WHERE id='$id'";
mysql_db_query($dbname, $sql)or die("update error".mysql_error());
}
但是,將其導入到數據庫下面我展示。
'User''s answer'
這是錯誤的,因爲我想保存就像User's answer
。我不知道爲什麼它節省了很多單引號。請給我建議,我該如何解決它。
看看這個:http://php.net/manual/en/function.addslashes.php –
爲什麼不使用MySQL LOAD DATA? http://dev.mysql.com/doc/refman/5.7/en/load-data.html它會有點棘手,因爲你不必只導入一個CSV文件,但也更新,但它比解析通過代碼的文件 - 也,使用準備好的語句 – fthiella
當我使用** addslashes **而不是** mysql_real_escape_string **時,它顯示像這樣的''用戶'的答案'相同的錯誤。謝謝。 – Cloud