我将数据作为大容量上传( $handle =fopen)插入到表中($_FILES‘’file_clg‘,"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);这里只提到两个字段:我的大容量上传csv中超过25列。
问题是csv分隔符是逗号(','),但在某些情况下,“details”字段内容包括逗号,在这种情况下,记录没有正确插入。
如何解决这个案子?
插入部分有问题,
学院名称:阿尔瓦工程技术学院(AIET)
并按以下格式保存在表格中:
阿尔瓦�工程与技术研究所
我试着用下面的代码:
$collegename = htmlentities(iconv("cp1252", "utf-8", trim(str_replace(array("’","'"),"'",$data[0]))), ENT_IGNORE, "UTF-8");但是它不起作用,我怎么能用单引号来解决这个问题呢?
我放置了:标题(“Content: text/html;charset=ISO-8859-1");
进入标题部分..。
发布于 2017-04-10 12:25:05
我需要看到一些示例才能自信地说出任何事情,但是对于引用带有逗号的值是有说明的,以保留值计数。https://stackoverflow.com/a/769675/2943403
或者,您可以创建一个新的fputcsv()代码块,它将生成一个分号(或其他不冲突的字符)分隔的csv文件。我没有提供这方面的实际片段。在这方面有许多可用的资源,包括:
然后,while循环可以使用; (或其他什么)作为分隔符。
为了安全地将值(其中可能有单引号)放置到查询中,请使用准备好的陈述
// 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;
}https://stackoverflow.com/questions/43320386
复制相似问题