数据库类自动更新方法详解

    /**
     *封装一个 自动 更新的方法
     * @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); }

后记:
  该方法就就是 依据用户传入的 字段 值 关联数组,更新, 如果用户没有传入更新条件, 则去 用户传入的 字段 值这个关联数组中去找。
原文地址:https://www.cnblogs.com/mtima/p/2845045.html