导入包含单引号的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。我不知道为什么它节省了很多单引号。请给我建议,我该如何解决它。
2015-12-10
Cloud
+0
看看这个:http://php.net/manual/en/function.addslashes.php –
+0
为什么不使用MySQL LOAD DATA? http://dev.mysql.com/doc/refman/5.7/en/load-data.html它会有点棘手,因为你不必只导入一个CSV文件,但也更新,但它比解析通过代码的文件 - 也,使用准备好的语句 –
+0
当我使用** addslashes **而不是** mysql_real_escape_string **时,它显示像这样的''用户'的答案'相同的错误。谢谢。 –