CI 框架批量添加数据(如果数据库有就更新数据)

model:

   public function insert_select($values)
      {
        $sql = ‘INSERT INTO ‘ . $this->_table_name .
            ‘(article_id,user_id,share_link,short_link,read_price,created_at,updated_at) VALUES ‘ . $values
            . ‘ ON DUPLICATE KEY UPDATE article_id=values(article_id),user_id=values(user_id),share_link=values(share_link),
            read_price=values(read_price),created_at=values(created_at),updated_at=values(updated_at)‘;
        $query = $this->db->query($sql);
        return $query;
      }

controllers:

批量添加的数据$res数组是:

             //拼接sql     $sql = ‘‘;
        foreach ($res as $key => $val) {
            $sql .= ‘(‘ . $val[‘article_id‘] . ‘,‘ . $val[‘user_id‘] . ‘,‘ ."‘". $val[‘share_link‘] ."‘".‘,‘ ."‘". $val[‘short_link‘] ."‘".
                ‘,‘ . $val[‘read_price‘] . ‘,‘."‘" . $val[‘created_at‘] ."‘". ‘,‘."‘" . $val[‘updated_at‘] ."‘" . ‘)‘.(($key)+1==count($res)?‘‘:‘,‘);
        }
        $arr = $this->share_record_model->insert_select($sql);

原文地址:https://www.cnblogs.com/sgm4231/p/11984890.html

时间: 2024-11-14 05:11:54

CI 框架批量添加数据(如果数据库有就更新数据)的相关文章

Excel向数据库插入数据和数据库向Excel导出数据

为了熟悉java里工作簿的相关知识点,所以找了"Excel向数据库插入数据和数据库向Excel导出数据"的功能来实现. 注意事项:1,mysql数据库: 2,需要导入的jar包有 jxl.jar,mysql-connector-java-5.1.22-bin.jar,ojdbc6.jar 代码如下: 一, 建立数据库名称 javaforexcel,建立表stu DROP TABLE IF EXISTS `stu`;CREATE TABLE `stu` (  `id` int(11) N

PHP对于数据库的基本操作——更新数据

PHP对于数据库的基本操作--更新数据 主要的语句:$update = mysql_query("update user set password='abc' where username='123'"); 这句话的意思是,更新user表,设置passWord字段的值为abc,筛选条件为username为123的数据.就是修改user表里面username为123字段里面的password,将password的值为abc. 前面的随笔里面忘了说  where 这个了,这个我理解为筛选,

CI框架后台添加左侧导航栏出现的一系列问题

后台在数据库中添加了一个栏目.但是但点击这个新添加的栏目之后,却发现左侧的导航栏没有了,,为什么呢. 注意CI框架下在shared/libraries/Acl.php这个文件,(后台权限控制类) 里边有一个show_left_menus()方法,这个方法主要是用来过滤左侧导航栏的功能.在这里边添加你新添加的导航, 发现是不是ok了,,耗费大量人力物力,终于好了..

CI框架下PHP读取mySQL数据库

1.在application/config/database.php 中填写好数据库的相关内容 包括hostname username password database 等 2.新建一个文件 application/controllers/GuanliCon.php 代码如下 <?php class GuanliCon extends CI_Controller{ public function __construct() {      parent::__construct();      

CI框架常用函数(AR数据库操作的常用函数)

用户手册地址:http://codeigniter.org.cn/user_guide/index.html 1.查询表记录$this->db->select(); //选择查询的字段$this->db->select_max();$this->db->select_min();$this->db->select_avg();$this->db->select_sum();$this->db->from(); //选择表名$this-

前台传来的新数据与数据库中的旧数据比较更新算法

工作中遇到一个很小的功能,发现写好还有点难度,经过一晚上的思考,把成果记录下. 问题: 数据库中保存了一些数据,前台更新操作传来新的数据.如何比较差异,进行更新.如: 前台传来1,2,3,数据库中有3,5.则需要在数据库中增加1,2:在数据库中删除5:原有数据3不变. 解决方法一: 先把数据库中原的数据全部清空,然后把前台的数据全部执行插入. 这种方法简单,很容易理解,以及判断及正确性.缺点是如果原数据库数据较多,则重复删除后增加,则效率不高. 解决方法二: 查询原数据库中的数据,做为待删除的列

使用达思SQL数据库修复软件导出数据库时的接收数据的数据库如何清空表数据?

清空表数据,保留视图,存储过程,函数,以及保留表约束.触发器等等,可以给故障数据库预留一个好的躯壳,把坏库数据导入此躯壳.对用友.金蝶等数据库恢复有时候能达到好的效果. 清除表数据有两种方法: 一种用delete from [表名] ,这种方法对于大数据库,速度慢,会产生很大的日志信息,对于小库,速度可以忽略: 另一种是truncate table [表名] ,这种方法速度快,但清除不了具有外键的表数据. 在清除表数据时,可以采用两种方法结合. 清除表数据时先禁用一切约束,清除完成以后再次启用约

[mysql] SQL:当不存在时插入数据;当存在时更新数据

ON DUPLICATE KEY : INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+3; INSERT INTO test2(file,owner,flag) VALUES ('file2','coco.yue',1) ON DUPLICATE KEY UPDATE flag=3;

数据库更新数据时的传值问题

如果数据库中有多列值时,但是不定个数更新是需要采取“先通过查找数据库中的所有数据保存为一个model类,再给相应要改变的值复制,其他的更新的值保持原有数据不变” 比如:DAL(数据访问层) /// <summary> /// 更新数据,虽然有的时候只是更新某个值,其他的值可以原样更新.在更新之前先要查询一下原有的数据,以便于不更新没必要的更新 /// </summary> /// <param name="model"></param>