我想将csv文件中的数据插入到我的sql表excel
中,代码可以正常工作,但是不能正常工作。
示例:
Excel文件中的数据
孩子
kier @ Noemail @ gmail.com
表excel中的输出
excel_name
:kier; kier @ Noemail @ gmail.com
excel_email
:空白
<?php
$connect = mysqli_connect('localhost','root','P@ssw0rd@sql','voters');
if (isset($_POST['submit'])) {
if ($_FILES['file']['name']) {
$filename = explode(".",$_FILES['file']['name']);
if ($filename[1] == 'csv') {
$handle = fopen($_FILES['file']['tmp_name'], "r");
while ($data= fgetcsv($handle)) {
$item1 = mysqli_real_escape_string($connect, $data[0]);
$item2 = mysqli_real_escape_string($connect, $data[1]);
$sql = "INSERT INTO excel (excel_name, excel_email) VALUES ('$item1','$item2')";
mysqli_query($connect, $sql);
}
fclose($handle);
print "Rois x Dave!";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form method="POST" enctype="multipart/form-data">
<div align="center">
<p>upload<input type="file" name="file"></p>
<p><input type="submit" name="submit" value="import"></p>
</div>
</form>
</body>
</html>
问题是excel_name和excel_email串联在excel_name的一列中,请帮我解决这个问题。蒂亚!
答案 0 :(得分:0)
看起来$data[0]
包含您需要的信息。我只需要再次使用explode并分离数据,然后再将其移动到数据库中即可。
尝试将while循环更改为此:
while ($data= fgetcsv($handle)) {
$items = explode(';', $data[0]);
$sql = "INSERT INTO excel (excel_name, excel_email) VALUES ('$items[0]','$items[1]')";
mysqli_query($connect, $sql);
}
答案 1 :(得分:0)
阅读文档:http://php.net/manual/en/function.fgetcsv.php
array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\\" ]]]] )
修改
$data= fgetcsv($handle)
到
$data = fgetcsv($handle, $length = 0, $delimiter = ';')
您上传的csv文件的详细信息是;
答案 2 :(得分:0)
根据值kier;kier@Noemail@gmail.com
,您的分隔符为;
。 fgetcsv
的默认定界符为,
。因此,您应该传递;
作为分隔符参数:
while ($data = fgetcsv($handle, 4096, ';')) {
此外,调试变量以查看其具有什么值总是有用的:
var_dump($item1, $item2);