我无法理解这个......
控制器:
public function update()
{
$string = 'xml/gzip';
$xml = simplexml_load_file("compress.zlib://$string");
foreach ($xml->merchant as $merchant) {
$merchant_name = $merchant['name'];
$merchant_id = $merchant['id'];
$data1 = array(
'merchant_id' => $merchant_id,
'merchant_name' => $merchant_name
);
$this->load->model('Administration_model');
$this->Administration_model->insert_merchants($data1);
}
}
型号:
public function insert_merchants($data1)
{
$this->db->insert('merchants', $data1);
}
我的控制器中的foreach
循环正在运行来自xml电子表格的数据,正如错误所示 - 值'911'和'website.com'应该是插入的值...那么为什么呢将'website.com'确定为'字段列表'?
错误:
A Database Error Occurred
Error Number: 1054
Unknown column 'website.com' in 'field list'
INSERT INTO `merchants` (`merchant_id`, `merchant_name`) VALUES (911, website.com)
它是否与merchant_id
是主列这一事实有关,这在技术上是重复的条目...如果是这样,任何有关如何添加“ON DUPLICATE KEY ...”的提示功能?
答案 0 :(得分:1)
您需要引用字符串,否则它会认为您指的是列名。
INSERT INTO `merchants` (`merchant_id`, `merchant_name`) VALUES (911, 'website.com')
答案 1 :(得分:1)
您的代码看起来没有任何问题。我建议升级到最新版本的CodeIgniter,目前是3.1.5,然后重新运行代码。
$data = array(
'merchant_id' => 911,
'merchant_name' => 'website.com',
);
$this->db->insert('merchants', $data);
如果您仍有问题,请尝试对值进行编码并让我们知道会发生什么。
对于您的重复密钥问题,CodeIgniter 3.1.5具有替换功能,可以更新重复密钥。 请记住使用它的性能损失,对于大量导入,这可能非常慢。对于大型数据集,请查看批处理查询。
$data = array(
'merchant_id' => 911,
'merchant_name' => 'website.com',
);
$this->db->replace('merchants', $data);