您好我正在尝试上传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>
答案 0 :(得分:1)
fgetcsv函数必须在while循环条件内。
所以它就像
while ($getcsvdata = fgetcsv($fileop, '100', ','))
它运作正常。
答案 1 :(得分:0)
更改此
while (($getcsvdata) !==false )
到
while (!($getcsvdata))
答案 2 :(得分:0)
当您达到记录总数时停止更改为以下内容:
$i=0;
while ($i<count($getcsvdata))
{
echo $id = $getcsvdata[0];
...
echo $location = $getcsvdata[5];
echo '<br/>';
$i++;
# insert query to run here
}
**更新**
您需要遍历行,而不仅仅是单行中的字段。所以,忽略答案的第一部分改为:
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语句说&#34;如果还有其他记录要获取,那么就把它拿出来并放入一个字段数组$getcsvdata
。