久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

使用Codeigniter重寫insert的方法(推薦)

下面小編就為大家帶來一篇使用Codeigniter重寫insert的方法(推薦)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

使用Codeiginter 框架插入數據時有唯一索引鍵值存在解決辦法

對數據進行存儲的時候,會有一些唯一索引的字段已經有值了,插入數據的時候會失敗我們通常解決辦法是先查詢這個值是否存在,存在就跟新update,不存在就insert。以下是重寫了Codeigniter 模型中的insert方法,極大的簡化了步驟!

/**
 * 插入單條記錄(Insert)
 *
 * @param array $params 插入字段及值數組
 * @param string $table 插入表名,未指定的場景插入主表
 * @param array $columns 插入表中所屬字段名數組,若指定則按此進行過濾
 * @param array $updateColumns 若唯一鍵沖突時需要更新的列數組
 * @return mixed FALSE:沒有插入的字段 int:插入記錄id
 *
 * @throws \C_DB_Exception
 */
public function insert($params, $table = NULL, $columns = array(), $updateColumns = array())
{
  // 如果未指定表名,則認為對本Model層的主表進行操作
  if (empty($table)) {
    $table = $this->table;
    $columns = $this->columns;
  }
  // 過濾掉不屬于該表中的字段
  if ( ! empty($columns)) {
    foreach ($params as $column => $val) {
      if (in_array($column, $columns)) {
        $row[$column] = $val;
      }
    }
  }
  // 不過濾
  else {
    $row = $params;
  }
  // 沒有插入字段,直接返回
  if ( ! isset($row)) {
    return FALSE;
  }
  // 保證創建時間、更新時間必須設置
  if ( ! isset($row['create_at']) && in_array('create_at', $columns)) {
    $this->load->helper('common_function');
    $datetime = get_datetime();
    $row['create_at'] = $datetime;
    $row['update_at'] = $datetime;
  }
  // 封裝SQL文,過濾不安全因素
  $sql = $this->db->insert_string($table, $row);
  // 若唯一鍵沖突時需要更新的列數組,則再次封裝SQL文
  if ( ! empty($updateColumns)) {
    $updateValues = '';
    foreach ($updateColumns as $updateColumn) {
      if (isset($updateValues[0])) {
        $updateValues .= ',';
      }
      $updateValues .= $updateColumn . '=VALUES(' . $updateColumn . ')';
    }
    $sql = $sql . ' ON DUPLICATE KEY UPDATE ' . $updateValues;
  }
  // SQL執行
  $query = $this->db->query($sql);
  // SQL執行失敗,拋出異常
  if (FALSE === $query) {
    $code = $this->db->_error_number();
    $msg = $this->db->_error_message();
    C_log::Error($code . ':' . $msg, $this->user_id, $sql, self::STATUS_DB_LOG);
    throw new C_DB_Exception('', C_DB_Exception::DB_ERR_CODE);
  }
  // SQL文寫入DB日志
  if (LOG_UPDATE_SQL) {
    C_log::Info('', $this->user_id, $sql, self::STATUS_DB_LOG);
  }
  // 取得插入ID返回
  $id = $this->db->insert_id();
  return $id;
}

如果直接寫SQL還有一種語句

語法: INSERT INTO table VALUES () ON DUPLICATE KEY UPDATE row='$row'

舉個例子:

INSERT INTO it_teacher (uid,name,qq,create_at) 
VALUES ('$userid','$name','$qq',NOW()) ON DUPLICATE KEY UPDATE name='$name',qq='$qq',phone='$phone'";

以上這篇使用Codeigniter重寫insert的方法(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了CI框架(CodeIgniter)操作redis的方法,結合實例形式詳細分析了CodeIgniter框架針對redis數據庫操作的相關配置與使用技巧,需要的朋友可以參考下
這篇文章主要給大家介紹了關于MixPHP、Yii和CodeIgniter的并發壓力測試的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面
這篇文章主要介紹了CI框架(CodeIgniter)公共模型類定義與用法,結合具體實例形式分析了CI框架公共模型類的定義以及基于公共模型類操作數據庫的相關實現技巧,需要的朋友可以參考下
這篇文章主要介紹了CodeIgniter整合Smarty的方法,結合實例形式分析了CodeIgniter3.0.3整合Smarty3.1.27的步驟與相關設置技巧,需要的朋友可以參考下
這篇文章主要介紹了PHP CodeIgniter分頁實例及多條件查詢的思路詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
下面小編就為大家帶來一篇淺談php(codeigniter)安全性注意事項。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 黄色在线免费观看 | 天天操天天干天天爽 | 免费观看一级特黄欧美大片 | 本道综合精品 | 欧美日韩国产一区二区三区 | 久久精品视频网站 | 欧美毛片免费观看 | 精品在线视频播放 | 99reav | 亚洲精品久久久一区二区三区 | 毛片站| 日韩视频中文字幕 | 欧美在线观看一区 | www.激情.com | 欧美乱淫视频 | 九九av| 欧美日韩视频在线第一区 | 一区二区小视频 | 91视频在线 | 欧美成人aaa级毛片在线视频 | 男人久久天堂 | 超碰人人在线 | 免费一区| 人人射人人草 | 亚洲 欧美 日韩 在线 | 色婷综合网| 国产视频福利 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 九色av | 亚洲国产欧美一区二区三区久久 | 国产精品特级毛片一区二区三区 | 亚洲国产成人久久综合一区,久久久国产99 | 久久久久综合 | 国产成人久久精品一区二区三区 | 亚洲精品视频一区 | 伊人网站在线 | av香港经典三级级 在线 | 欧美日韩国产一区二区三区 | 日韩在线视频免费观看 | 日韩av在线一区 | 青青草av在线播放 |