zoukankan      html  css  js  c++  java
  • 数据库类自动更新方法详解

        /**
         *封装一个 自动 更新的方法
         * @param $data array 需要更新的字段和值的关联数组
         * @param $where_str string 更新条件 默认没有条件
         * @return bool 更新成功为真 失败为假
         */
        public function autoUpdate($data, $where_str='') {
    
            //语句开始, sql语句的开始部分
            $query = "update {$this->getTable()} set ";
            //拼凑字段了
    
            //清理字段
         //判断用户传递进来的数组的下标,即字段是否在数据库的字段内,如果不存在, 则把该数组元素从数组中移除
    foreach($data as $key=>$value) { if(in_array($key, $this->fields)) { //正确的字段 //将符合条件的字段 先 组成 key='value'的形式放入一个数组 $fields[] = "{$key}='{$value}'"; } else { unset($data[$key]); } } //拼凑字段部分
         //我们把fields数组的值部分用都好连接起来 形成 values(部分)
    $fields_str = implode(', ', $fields); $query .= $fields_str; //拼凑条件部分 // "where category_id='1'" if($where_str == '') {//判断用户是否传递更新条件 //没有传递 //判断主键,把主键当作条件, 主键字段的值为$data数据中保存的值, 如果在$data中没有发现主键, 则结束自动更新 $_pk = $this->fields['_pk']; if(array_key_exists($_pk, $data)) { //主键存在,使用主键作为条件 $where_str = " where {$_pk}='{$data[$_pk]}' "; } else { //主键不存在 不予更新 return false; } } else { //传递 , 把用户传递的条件当作更新条件 $where_str = " where {$where_str} "; } $query .= $where_str;     //执行查询语句 return $this->query($query); }

    后记:
      该方法就就是 依据用户传入的 字段 值 关联数组,更新, 如果用户没有传入更新条件, 则去 用户传入的 字段 值这个关联数组中去找。
  • 相关阅读:
    MutationObserver 简单应用场景
    call apply bind sleep
    js 继承,Object.setPrototypeOf | Object.getPrototypeOf | Object.create class
    JSON.stringify
    javascript 与node的 event-loop
    js 不常用面试题 数组对象深度取值
    Oracle单表备份
    mybatis批量写法
    mybatis批量更新
    Python中if __name__ == '__main__':理解
  • 原文地址:https://www.cnblogs.com/mtima/p/2845045.html
Copyright © 2011-2022 走看看