【问题标题】:Insert Batch, and if duplicate key Update in Codeigniter 3 HMVC插入批处理,如果 Codeigniter 3 HMVC 中的重复键更新
【发布时间】:2019-06-12 08:26:44
【问题描述】:

insert_batch 中是否有任何执行方法,如果密钥已经存在,请在 codeigniter 3 HMVC 中更新该行?

我浏览了文档,发现只有 insert_batch 和 update_batch 并从一些旧的讨论中找到,但使用 Codeigniter 2 时,当我在 HMVC 上运行时,它也不起作用。

如何在活动记录中使用重复键更新行(MySQL 查询:重复键更新)?如果在 insert_batch 中未能插入或更新一行会发生什么?所有插入都失败还是只有那一行?

谢谢。

【问题讨论】:

  • @Penguine 我已经尝试过该解决方案,但它在 ci3 中不起作用.. 请提供任何解决方案?
  • 使用触发器比在代码中大发雷霆要好得多。查看一些教程。
  • 为什么不使用循环而不是批量插入?
  • @DanishAli,我已经在使用 insert batch 了,但是需要一个一个检查..数据太多,需要很长时间...有什么办法解决这个问题吗? ...我一直在谷歌上搜索,似乎他们使用的是旧的 ci 版本

标签: php mysql codeigniter codeigniter-3


【解决方案1】:

这对你有帮助

public function updateduplicatebatch($table, $data ) {
     if (empty($table) || empty($data)) return false;
     $duplicate_data = array();

     foreach($data AS $key => $value) {
        $duplicate_data[] = sprintf("%s='%s'", $key, addslashes($value));
     }

     $sql = sprintf("%s ON DUPLICATE KEY UPDATE %s", $this->db->insert_string($table, $data), implode(',', $duplicate_data));

     $this->db->query($sql);
     return $this->db->insert_id();
}

你的排列应该是这样的

$data = array('name' => $name, 'phone' => $phone, 'age' => $age);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-01
    • 2017-08-19
    • 1970-01-01
    • 2022-11-11
    • 2011-09-10
    • 2014-01-12
    • 2017-01-31
    相关资源
    最近更新 更多