我将数据作为批量上传插入表中, $ 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");
进入标题部分..
答案 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;
}