久久久久久久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)安全性注意事項。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
主站蜘蛛池模板: 成人网视频 | 欧美日韩国产一区二区三区 | 久久久久久久亚洲精品 | 久久99精品久久久久久秒播九色 | 久久久久国产一区二区三区 | 国产精品久久久久久久久婷婷 | 羞羞色影院 | 亚洲国产成人精品久久久国产成人一区 | 99久久婷婷国产综合精品电影 | xx性欧美肥妇精品久久久久久 | 成年人视频在线免费观看 | 日韩免费1区二区电影 | 在线视频中文字幕 | 欧美一区二区在线 | 成人av影院 | 久久久91精品国产一区二区三区 | 天天碰日日操 | 偷派自拍 | 欧美激情精品久久久久久变态 | 精品久久网 | 欧美综合一区 | 国产日韩欧美一区二区 | 欧美日韩综合精品 | www.887色视频免费 | 99精品电影 | 欧美精品成人一区二区三区四区 | 国产91在线 | 亚洲 | 日本韩国欧美在线观看 | 伊人网站在线 | 欧美另类视频 | 男女网站免费 | 黄色片视频网站 | 欧美精品欧美精品系列 | 在线免费观看毛片 | 久久久精品 | 免费黄色特级片 | 亚洲一区二区av | 国产福利91精品一区二区三区 | 欧美成人一区二区三区 | av黄色免费在线观看 | 日韩欧美在线播放 |