利用Codeigniter怎么对插入进行重写

  介绍

这期内容当中小编将会给大家带来有关利用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怎么对插入进行重写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

利用Codeigniter怎么对插入进行重写