Php 在Yii框架中读取CSV

Php 在Yii框架中读取CSV,php,yii,fgetcsv,Php,Yii,Fgetcsv,我正在yii框架中读取csv文件。它循环遍历文件中的每个单词,但只保存最后一个单词。例如,我的csv文件中有以下文字 First Second Third Fourth 下面是我在文件中循环的代码 $fileHandler=fopen("upload.csv",'r'); if($fileHandler){ while($line=fgetcsv($fileHandler,1000)){ $model->image_url=$line

我正在yii框架中读取csv文件。它循环遍历文件中的每个单词,但只保存最后一个单词。例如,我的csv文件中有以下文字

First
Second
Third
Fourth
下面是我在文件中循环的代码

$fileHandler=fopen("upload.csv",'r');
       if($fileHandler){
         while($line=fgetcsv($fileHandler,1000)){
           $model->image_url=$line[0];
                $model->save();
        }
    }
它只是在我的数据库中保存值“第四”。请指导。

正如注释中所建议的,您需要使用in-the-loop而不是out-side来初始化您的
$model
,因为它在第一次迭代中保存了值,然后在剩余的迭代中更新相同的对象(即数据库中的同一行)

$fileHandler=fopen("upload.csv",'r');
if($fileHandler){
   while($line=fgetcsv($fileHandler,1000)){
      $model = new CLASS_NAME;
      $model->image_url=$line[0];
      $model->save();
   }
}
正如注释中所建议的,您需要使用in-in-in-the循环而不是out-side来初始化
$model
,因为它在第一次迭代中保存了值,然后在其余迭代中更新相同的对象(即数据库中的同一行)

$fileHandler=fopen("upload.csv",'r');
if($fileHandler){
   while($line=fgetcsv($fileHandler,1000)){
      $model = new CLASS_NAME;
      $model->image_url=$line[0];
      $model->save();
   }
}

它不会正常工作,而是一直插入、更新同一行吗?这可以解释为什么您只看到最后一行。您需要在循环中使用初始化$model@乔科洛克是right@zzlalani,加上一个答案,我不知道YII是如何工作的,所以,你应该得到这个答案的优点;你说得对。我已经看过很多阅读csv的教程,上面的代码流没有人在循环中重新初始化模型。谢谢但是,它不是可以正常工作,而是可以一直插入、更新同一行吗?这可以解释为什么您只看到最后一行。您需要在循环中使用初始化$model@乔科洛克是right@zzlalani,加上一个答案,我不知道YII是如何工作的,所以,你应该得到这个答案的优点;你说得对。我已经看过很多阅读csv的教程,上面的代码流没有人在循环中重新初始化模型。谢谢表达敬意