0

这个我摸不着头脑...

控制器:

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 ...”功能的任何提示?

4

2 回答 2

1

您需要引用字符串,否则它认为您指的是列名。

INSERT INTO `merchants` (`merchant_id`, `merchant_name`) VALUES (911, 'website.com')
于 2013-11-06T22:10:21.600 回答
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);
于 2017-07-17T08:45:50.230 回答