你好,我试图上传CSV数据插入mysql数据库。我陷入了无限循环,只打印csv文件的第一行。
你能告诉我我的代码有什么问题吗?
<?php
$conn = mysql_connect('localhost', '', '') or die(mysql_error());
mysql_select_db('test',$conn);
echo ($conn)?'connection estabished': 'not connected';
if($_POST['submit'])
{
$file = $_FILES['f']['tmp_name'];
//var_dump(file($file));
var_dump($file);
$fileop = fopen($file, 'r') or die('uncable to open file ');
$getcsvdata = fgetcsv($fileop, '100', ',');
var_dump($getcsvdata);
while (($getcsvdata) !==false )
{
echo $id = $getcsvdata[0];
echo $region = $getcsvdata[1];
echo $skills_category = $getcsvdata[2];
echo $date = $getcsvdata[3];
echo $time = $getcsvdata[4];
echo $location = $getcsvdata[5];
echo '<br/>';
# insert query to run here
}
fclose($fileop);
}
?>
<html>
<head></head>
<body>
<form action="#" method="post" enctype="multipart/form-data">
<input type="file" name="f" value="upload">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
fgetcsv函数必须在while循环条件内。
所以应该是
while ($getcsvdata = fgetcsv($fileop, '100', ','))
效果很好
你可以试试这个
change this
while (($getcsvdata) !==false )
while (!($getcsvdata))
当达到记录总数时停止更改为:
$i=0;
while ($i<count($getcsvdata))
{
echo $id = $getcsvdata[0];
...
echo $location = $getcsvdata[5];
echo '<br/>';
$i++;
# insert query to run here
}
** Update **
您需要遍历行,而不仅仅是单行中的字段。因此,忽略答案的第一部分更改为:
while($getcsvdata = fgetcsv($fileop, '100', ',')){
echo $id = $getcsvdata[0];
echo $region = $getcsvdata[1];
echo $skills_category = $getcsvdata[2];
echo $date = $getcsvdata[3];
echo $time = $getcsvdata[4];
echo $location = $getcsvdata[5];
echo "<hr/>";
}
这个while语句表示"如果有另一个记录要获取,那么获取它并将其放入字段$getcsvdata
的数组中。