ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql-如果不存在则插入Codeigniter

2019-11-22 03:15:23  阅读:173  来源: 互联网

标签:codeigniter mysql


我的控制器:

function getFeed()
{
   $feed_url = $this->input->get("url");
   $content = file_get_contents($feed_url);
   $x = new SimpleXmlElement($content);

    foreach($x->channel->item as $entry) {
        $feeds[] = array(
                         'title' => (string)$entry->title,
                         'url'=> (string)$entry->link,
                         'username' => $this->session->userdata('username')                      
                );

        $this->load->model('membership_model');
        $this->membership_model->feeds($feeds);
    }

模型:

function feeds($feeds_data)
{   
        $this->db->insert_batch('feeds', $feeds_data);
}

如果表中仅不存在该行,是否有要插入的函数?我有一个包含4列的表格:id,title,url,username.当我单击他时,我有一个锚点,它调用geFeed函数并将信息插入表中.但是我只想插入如果不存在.

解决方法:

我也面临同样的挑战,因此我最终想出了一个可能对您有帮助的功能.

    function safe_update_batch($table_name,$records,$filter_field)
    {
        $filters=array();

        foreach($records as $record)$filters[]=$record[$filter_field];

        $this->db->query("SET SESSION group_concat_max_len=10000000");

        $query=$this->db->select("GROUP_CONCAT($filter_field) AS existing_keys",FALSE)->where_in($filter_field, $filters)->get($table_name);

        $row=$query->row();
        $found_fields=explode(',',$row->existing_keys);         

        $insert_batch=array();
        $update_batch=array();

        foreach($records as $record)
        {
            if(in_array($record[$filter_field],$found_fields))$update_batch[]=$record;
            else $insert_batch[]=$record;
        }

        if(!empty($insert_batch))$this->db->insert_batch($table_name,$insert_batch);
        if(!empty($update_batch))$this->db->update_batch($table_name,$update_batch,$filter_field);      
    }

//样本用法

$this->safe_update_batch('feeds', $feeds_data,'title');

标签:codeigniter,mysql
来源: https://codeday.me/bug/20191122/2056782.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有