2013-08-25 58 views
0

我正在基于Zend Framework v1.12开发电子商店,我需要创建一个包含数千条记录的产品列表解析器。我试图做一个createRow() -> save()的循环,但我发现它太慢,大列表。Zend Framework v1插入多行

是否Zend fr。有一个功能可以将多个记录保存在一个查询中?

回答

0

不,Zend Framework v1没有这样的功能。但是,为了满足您的需求,实施INSERT INTO并不难。这里是我的功能:

 /** 
    * @brief Safe implementation of INSERT INTO 
    * 
    * @param [in] $array Array[] of values 'column'=>'value" 
    * @return void 
    * 
    */ 
    protected function saveRows($array) { 
     $values=$columns = array(); 
     $vLabels=$cLables = ''; 

     foreach ($array as $colval) { 
      $vLabels.="("; 
      foreach ($colval as $column=>$value) { 
       if (!$ready) { 
        array_push($columns,$column); 
        $cLables.='?,'; 
       } 
       array_push($values,$value); 
       $vLabels.='?,'; 
      } 
      $vLabels  = rtrim($vLabels,', '); 
      !$ready  ? $cLables = rtrim($cLables,', ') : null; 
      $vLabels  .= "),"; 
      $ready   = true; 
     } 
     $vLabels = rtrim($vLabels,', '); 

     $query="INSERT INTO `".$this->primary_key."` (".$cLables.") VALUES ".$vLabels; 
     $subst=array_merge($columns,$values); 
     $this->query($query,$subst); 
    }