Codeigniter模型获取错误:列数与第2行的值计数不匹配

时间:2013-12-06 15:21:49

标签: mysql codeigniter model

我正在从rss.xml Feed解析货币汇率,这一切都很有效。我现在正尝试将该数据插入名为rates的数据库中,并使用名为tblRates的表。我一直收到这个错误,不知道为什么。这是我用来尝试批量插入数据库的模型中的函数。

function addIQDRates($Data){

    if($this->db->insert_batch('tblRates', $Data, 'Currency'))
    {
        return $this->db->affected_rows();
    }else{
        return FALSE;
    }
}

此处还有我在控制器中使用的foreach语句,用于对xml文件中的数据进行排序并将其插入数据库。 $ Data = array();

$Data = array();
$Count = 0;

foreach ($xml->channel->item as $currencyInfo) {
  $Data[$Count]['Currency'] = trim(str_replace("/USD", "", $currencyInfo->title)); // UNIQUE
  $Data[$Count]['PubDate'] = date('Y-m-d H:i:s', strtotime(trim($currencyInfo->pubDate)));
  $Data['CXRate'] = trim(preg_replace("/[^0-9,.]/", "", str_replace("1 United States Dollar = ", "", $currencyInfo->description)));
  $Data[$Count]['DateCreated'] = date('Y-m-d H:i:s');                      
  $Count++;         
}

$TotalRows = $this->mycron_model->addIQDRates($Data);

此处还有我的创建表声明

CREATE TABLE IF NOT EXISTS `tblRates` (
`RateID` int(11) NOT NULL AUTO_INCREMENT,
`Currency` varchar(50) NOT NULL,
`PubDate` datetime NOT NULL,
`CXRate` int(11) NOT NULL,
`DateCreated` datetime NOT NULL,
PRIMARY KEY (`RateID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
所有人都非常感谢。

1 个答案:

答案 0 :(得分:0)

我不确定,您可能写过$Data['CXRate']而不是$Data[$Count]['CXRate']

所以循环应该如下所示:

foreach ($xml->channel->item as $currencyInfo) {
   $Data[$Count]['Currency'] = trim(str_replace("/USD", "", $currencyInfo->title)); // UNIQUE
   $Data[$Count]['PubDate'] = date('Y-m-d H:i:s', strtotime(trim($currencyInfo->pubDate)));
   $Data[$Count]['CXRate'] = trim(preg_replace("/[^0-9,.]/", "", str_replace("1 United States Dollar = ", "", $currencyInfo->description)));
   $Data[$Count]['DateCreated'] = date('Y-m-d H:i:s');                      
   $Count++;         
 }