PHP excel脚本陷入while循环无限循环


php excel script getting caught into while loop infinite loop

你好,我试图上传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的数组中。