我正在开发基于 Zend Framework v1.12 的电子商店,我需要创建一个包含数千条记录的产品列表解析器。我尝试制作一个
createRow() -> save()
循环,但我发现对于大列表来说太慢了。
Zend fr 吗?有一个功能可以在一个查询中保存多个记录吗?
不,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);
}