Codeigniter 模型出现错误:列计数与第 2 行的值计数不匹配
Posted
技术标签:
【中文标题】Codeigniter 模型出现错误:列计数与第 2 行的值计数不匹配【英文标题】:Codeigniter Model Getting Error: Column count doesn't match value count at row 2 【发布时间】:2013-12-24 00:25:04 【问题描述】:我正在从 rss.xml 提要中解析货币汇率,这一切都很好。我现在正在尝试将该数据插入到一个名为 rates 的数据库中,并使用一个名为 tblRates 的表。我不断收到此错误,不知道为什么。这是我用来尝试批量插入数据库的模型中的函数。
function addIQDRates($Data)
if($this->db->insert_batch('tblRates', $Data, 'Currency'))
return $this->db->affected_rows();
else
return FALSE;
这也是我在控制器中使用的 foreach 语句,用于对 xml 文件中的数据进行排序并将其插入数据库。 $Data = 数组();
$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 语句
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】:我不确定,你可能写的是$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++;
【讨论】:
以上是关于Codeigniter 模型出现错误:列计数与第 2 行的值计数不匹配的主要内容,如果未能解决你的问题,请参考以下文章
列计数与第 1 行的值计数不匹配 VendorError:1136