我有这个页面,用户上传了一个CSV,然后使用PHP,现有的mysql表被截断,CSV中的值被添加到表中。
直到现在我通过导入CSV方法使用phpMyAdmin,但我想为用户提供一个页面,以便他自己上传文件。
CSV的结构就像这样
code, name, price
102, plane toy, 23.7
99%的行是相同的,除了它们中的一些被商店中的软件用双引号括起来,导出CSV。 像这样:
223, "Mary's white, tshirt", 23.9
这是我导入失败的地方,它在“白色,T恤”中到达','。
我在这里找到了一个方法来缓冲角色,但这是一个模式是相同的情况,我的变化,我不知道额外的“,”将在哪里,但我确实有这些项目包含额外的“,”用双引号“item”括起来。
如何根据问题修改我的代码?
这是我的代码:
<?php
if(isset($_POST['submit']))
{
$fname = $_FILES['sel_file']['name'];
$chk_ext = explode(".",$fname);
if(strtolower($chk_ext[1]) == "csv")
{
$filename = $_FILES['sel_file']['tmp_name'];
$handle = fopen($filename, "r");
$con = mysqli_connect('localhost','xxxx','zzzz','zzz');
if (!$con)
{
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"TABLE 1");
$sqltruncate = "TRUNCATE TABLE `TABLE 1`";
mysqli_query($con,$sqltruncate) or die(mysqli_error($con));
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
{
$sql = "INSERT into `TABLE 1`(code,name,price) values('$data[0]','$data[1]','$data[24]')";
mysqli_query($con,$sql) or die(mysqli_error($con));
}
fclose($handle);
echo "Success";
}
else
{
echo "Invalid file";
}
}
?>
<form action='<?php echo $_SERVER["PHP_SELF"];?>' method='post' enctype='multipart/form-data'>
Choose CSV : <input type='file' name='sel_file' id='sel_file'>
<input type='submit' name='submit' value='submit'>
</form>
答案 0 :(得分:0)
在while中使用foreach,然后使用trim()从值中删除引号。