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 行的值计数不匹配的主要内容,如果未能解决你的问题,请参考以下文章

SQL 错误列计数与第 1 行的值计数不匹配

列计数与第 1 行的值计数不匹配 VendorError:1136

错误列计数不计算第 1 行的计数 [重复]

MySQL 抛出“java.sql.SQLException:列计数与第 1 行的值计数不匹配”[重复]

PHP ~ 列数与第 1 行的值数不匹配

java.sql.SQLException:列计数与第 1 行的值计数不匹配,并且我的数据库的第 1 列是自动记录的