带有分隔符的csv文件,而不是php中的逗号

时间:2017-04-10 10:09:34

标签: php csv mysqli single-quotes bulkupdate

我将数据作为批量上传插入表中,             $ handle = fopen($ _ FILES [' file_clg'] [' tmp_name']," r");

        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分隔符是逗号(',')但在某些情况下'详细信息'字段内容包括逗号,因为在这种情况下记录未正确插入..

如何解决这个案子???

插入部分存在问题,

学院名称:Alva工程学院&技术(AIET)

并将其保存在表格中,格式如下:

Alva�s工程学院&技术(AIET)

我尝试下面的代码:

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

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

我放置:标题("内容类型:text / html; charset = ISO-8859-1");

进入标题部分..

1 个答案:

答案 0 :(得分: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;
}