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

时间:2014-07-09 02:12:12

标签: php mysql

您好我正在尝试上传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>

3 个答案:

答案 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