2017-04-10 192 views
0

我把数据插入表中作为批量上传, $ handle = fopen($ _ FILES ['file_clg'] ['tmp_name'],“r”);csv文件的分隔符,而不是逗号在php中

 fgetcsv($handle); 

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

     $collegename = trim(str_replace(array("’","'"),"'",$data[0])); 

     $description = trim(str_replace(array("’","'"),"'",$data[1])); 

     $sql1 = $db->selectquery("insert into $tbl(name,details)values('" .$collegename."','" .$description."')"); 

     } 

     fclose($handle); 

只有两个字段就是这里所说的:在我的bulkupload CSV人数超过25列

的问题是CSV分隔符是逗号(“”),但在某些情况下,‘细节’领域的内容包括:逗号,因为在这种情况下记录没有正确插入。

如何解决这种情况???

而在插入部分出了问题,

学院名称:工程&技术的阿尔瓦研究所(AIET)

其保存在表格如下格式:

工程Alvas研究所&科技(AIET)

我试试下面的代码:

  $collegename = htmlentities(iconv("cp1252", "utf-8", trim(str_replace(array("’","'"),"'",$data[0]))), ENT_IGNORE, "UTF-8"); 

但它不工作,我怎样才能解决单引号问题

而我放在:header(“Content-Type:text/html;字符集= ISO-8859-1" );

到标题部分..

+0

对于第一个问题,你必须分配一个唯一的分隔符使用,这将保护你的字段值包含逗号。如果你不能做这个调整,你可能需要工作一些正则表达式模式。至于第二个问题,请使用准备好的语句。你能否提供一对样本行,以便我们可以看到正在处理什么类型的数据? – mickmackusa

+0

如何使用独特的分隔符?我如何保存分号分隔的CSV文件? – Renjitha

+0

如果分号不存在于任何值中,它们将适用。或者,您可以使用管道'|'或其他很少使用的字符。 HTTP://计算器。com/questions/32309554/php-fputcsv-use-semicolon-separator-in-csv你可以在你的问题中显示几行数据吗? – mickmackusa

回答

0

我需要看到一些样品,说有信心什么,但对用逗号保存引用值规范值计数。 https://stackoverflow.com/a/769675/2943403

或者,你可以创建一个新的fputcsv()代码块,这将产生一个分号(或其他非冲突的字符)分隔的CSV文件。我不为此提供了实际的片断。有SO上的许多可用资源包括:

然后while循环可以使用;(或其他)作为分隔符。

至于安全地将您的值(可能有单引号)到您的查询,使用prepared statements

// I realize your query will be much larger than the sample... 
// declare $collegename and $decription values 
$stmt=$db->prepare("INSERT INTO `$tbl` (`name`,`details`) VALUES (?,?)"); 
$stmt->bind_param("ss", $collegename,$description); 
if($stmt->execute()){ 
    echo "success"; 
}else{ 
    echo "Error: ",$db->error; 
} 
相关问题