介绍
这期内容当中小编将会给大家带来有关利用Codeigniter怎么对插入进行重,写文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
<强>使用Codeiginter框架插入数据时有唯一索引键值存在解决办法强>
对数据进行存储的时候,会有一些唯一索引的字段已经有值了,插入数据的时候会失败我们通常解决办法是先查询这个值是否存在,存在就跟新更新,不存在就插入。以下是重写了Codeigniter模型中的插入方法,极大的简化了步骤!
/* * ,*插入单条记录(插入) ,* ,* @param array  params 美元;插入字段及值数组 ,* @param string  table 美元;插入表名,未指定的场景插入主表 ,* @param array  columns 美元;插入表中所属字段名数组,若指定则按此进行过滤 ,* @param array  updateColumns 美元;若唯一键冲突时需要更新的列数组 ,* @return mixed 错误的:没有插入的字段,int:插入记录id ,* ,* @throws \ C_DB_Exception ,*/public function 插入(params美元,美元table =, NULL,, columns 美元;=,数组(),,updateColumns 美元;=,数组()) {//才能,如果未指定表名,则认为对本模型层的主表进行操作 if 才能;(空(表)美元),{ ,,,table 美元;=,$ this→表; ,,,columns 美元;=,这→美元列; ,,}//,才能过滤掉不属于该表中的字段 if 才能;(!大敌;空(列)美元),{ ,,,foreach (params 美元;as column 美元;=祝辞,val美元),{ ,,,,,if (in_array($列,列)美元),{ ,,,,,,,行(列)美元美元,=,val美元; ,,,,,} ,,,} ,,}//才能,不过滤 else {才能 ,,,row 美元;=,params美元; ,,}//才能,没有插入字段,直接返回 if 才能;(!大敌;收取(行)美元),{ ,,,return 假; ,,}//,才能保证创建时间,更新时间必须设置 if 才能;(!大敌;收取($行[& # 39;create_at& # 39;]),,,, in_array (& # 39; create_at& # 39;,,美元列)),{ ,,,这个→美元负载→辅助(& # 39;common_function& # 39;); ,,,datetime 美元;=,get_datetime (); ,,,行美元[& # 39;create_at& # 39;],=, datetime美元; ,,,行美元[& # 39;update_at& # 39;],=, datetime美元; ,,}//,才能封装SQL文,过滤不安全因素=美元才能sql $ this→db→insert_string(表美元,,行);//才能,若唯一键冲突时需要更新的列数组,则再次封装SQL文 if 才能;(!大敌;空(updateColumns美元)),{ ,,,updateValues 美元;=,& # 39;& # 39;; ,,,foreach (updateColumns 美元;as  updateColumn美元),{ ,,,,,if (收取($ updateValues [0])), { ,,,,,,,updateValues 美元。=,& # 39;& # 39;; ,,,,,} ,,,,,updateValues 美元。=,updateColumn 美元;只& # 39;=值(& # 39;,只updateColumn 美元;只& # 39;)& # 39;; ,,,} ,,,sql 美元;=,sql 美元;只& # 39;,提醒DUPLICATE KEY UPDATE & # 39;,只updateValues美元; ,,}//才能,SQL执行=美元才能query $ this→db→查询($ sql);//才能,SQL执行失败,抛出异常 if 才能;(FALSE ===,查询美元),{ ,,,code 美元;=,$ this→db→_error_number (); ,,,msg 美元;=,$ this→db→_error_message (); ,,,C_log:错误(code 美元;只& # 39;:& # 39;,又是;味精、美元,美元这→user_id,, sql,美元,self:: STATUS_DB_LOG); ,,,throw new C_DB_Exception (& # 39; & # 39;,, C_DB_Exception:: DB_ERR_CODE); ,,}//才能,SQL文写入DB日志 if 才能;(LOG_UPDATE_SQL), { ,,,C_log:信息(& # 39;& # 39;,,$ this→user_id,, sql,美元,self:: STATUS_DB_LOG); ,,}//,才能取得插入ID返回=美元才能id $ this→db→insert_id (); return 才能;$ id; }
如果直接写SQL还有一种语句
语法:<强>插入表值()> INSERT INTO it_teacher (uid、名称、qq、create_at), VALUES (& # 39; userid # 39;美元,& # 39;名字# 39;美元,& # 39;qq # 39;美元,现在()),提醒DUPLICATE KEY UPDATE name=& # 39;名字# 39;美元,qq=& # 39; qq # 39;美元,电话=& # 39;$电话# 39;“
上述就是小编为大家分享的利用Codeigniter怎么对插入进行重写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。