相同的数组不适用于文件上载字段和codeigniter中的其他字段

时间:2013-06-19 03:48:16

标签: php arrays image codeigniter updates

在这里你会发现: https://github.com/joostvanveen/build-a-cms-with-codeigniter 它有核心文件夹中的MY_Model,库中的Admin_Controller,我在新网站中使用的源代码。我喜欢它如何流动数据但我在上传图像和更新它时遇到了问题。图像上传顺利,但每当我编辑数据时,数据库中的图像名称就会消失。它会全部更新。我知道如何停止更新其他字段,但同样的方法不适用于图像。

这是数据的保存方式,用户模型(user_m)具有验证和新变量以及表的选择。函数'save'在MY_Model中定义。 user_m扩展MY_Model而不是默认CI_Model。以下代码插入&更新。它在保存功能中定义。如果提供了$ id,则完成更新,否则插入新项目。

        // Insert
    if ($id === NULL) {
        !isset($data[$this->_primary_key]) || $data[$this->_primary_key] = NULL;
        $this->db->set($data);
        $this->db->insert($this->_table_name);
        $id = $this->db->insert_id();
    }
    // Update
    else {
        $filter = $this->_primary_filter;
        $id = $filter($id);
        $this->db->set($data);
        $this->db->where($this->_primary_key, $id);
        $this->db->update($this->_table_name);
    }

这就是用户控制器::

中的调用方式
$this->user_m->save($data, $id);

这是$ data的定义方式:

$data = $this->user_m->array_from_post(array('name', 'email', 'password'));

array_from_post函数在MY_Model中定义为:

public function array_from_post($fields){

    $data = array();
    foreach ($fields as $field) {
        $data[$field] = $this->input->post($field);
    }
    return $data;
}

我在tutsplus论坛上发现了这个:

if(isset($data['password'])){ $data['password'] = $this->user_m->$data['password']; }else{ unset($data['password']); }

此代码只是在未更新$ data ['password']时取消设置,并且可以更新其他字段而不更改数据库中的值。

我有什么方法可以为图像更新做同样的事情吗?如果需要,我可以提供更多源代码。

任何熟悉JoostVanVeen课程的人?数据流程就像他的课程一样。

0 个答案:

没有答案