2013-01-23 73 views
-2

我正在研究Drupal CMS,我正在解析文件&,它将数据存储在数据库中。Drupal db_insert一次不能保存超过440条记录

因此,如果文件中有超过440条记录(行),它不会进一步保存。它适用于小于440的行。这是一个奇怪的问题。

  $query = db_insert('table_name')->fields(array('field1', 'field2', 'field3')); 

      $row = 1; 
       while (($data = fgetcsv($handle, 0, ",")) !== FALSE) 
       { 
        $num = count($data); 

        if ($row > 1) { 

         $query->values(
          array(
           'fields1' => $data[0], 
           'fields2' => $data[2], 
           'fields3' => $data[4] 
          )); 

         if($row == '440'){ 
          break; 
         } 
        } 
        $row++; 
       } 


       $query->execute(); 

///// 如果($行== '440'){ 休息; }

被添加来检查它保存了多少行。如果我将440增加到460,它不会将记录保存到数据库。

+0

我已经添加了break语句来检查它是否保存了440条记录。它适用于440,但如果文件有600行,它也不会保存单行。 –

+0

该测试没有意义。通过添加它你保证你不会写出超过440行。我的意思是......如果将它设置为441,会发生什么?根据你所说的只有440行被写入。你不需要一个if/break来告诉你,除非你在441记录上得到某种错误,并且你想阻止它发生。如果你遇到了错误,你应该在你的问题中包含错误的细节。 – SpartanDonut

回答

4
if($row == '440'){ 
    break; 
} 

删除此块,它会很好。

+0

这是一个测试,如果::我的txt文件有1000行,它只适用于440记录。如果语句只是为了检查它保存到db有多少行,所以如果我把440增加到460它不会保存任何东西到db –

+0

该语句不是任何类型的检查,它会停止while循环之后第440排。 – ceejayoz

+0

我知道,那是我说如果我删除这个声明,没有行得到保存。该代码被添加来检查它允许我保存多少行,从这个代码我得到我可以保存只有440行,不超过。 –