значение переменной в массиве возвращается как целое число, но необходимая строка в codeigniter - PullRequest
0 голосов
/ 13 апреля 2011

Привет всем. Я полностью застрял в этой проблеме.

Я хочу добавить имя файла, который я изменил, используя функцию «переименовать» в codeigniter, в массив, а затем отправить этот массив в модель, гдеЯ могу извлечь его и добавить в него свою базу данных.

Однако, когда я делаю это, значение, добавленное в мою базу данных для имени файла, всегда приходит как «1».

Вот мой код,в него я загружен и файл.

Это часть класса контроллера с изменением и добавлением имени файла в массив

        $data = array('upload_data' => $this->upload->data()); // Get the file from the form userfile information
        $file = $data['upload_data']['file_name'];

        //hacky name generator
        $randomstring = random_string('alnum', 4);
        $filenew = rename($dir . $file, $dir . $id . '_' . $randomstring . '.jpg'); //basic php rename call, rename my upload now that upload finished

        // this array is all the other values from my form fields
        $data = array($this->input->post('comment'), $filenew);

        $configB['image_library'] = 'gd2'; // this code begins the thumbnail making process, from user guide
        $configB['source_image'] = $filenew;//$dir . $id.'.jpg'; // I am using $id for image name, which is my users id, comes from the session
        $configB['create_thumb'] = FALSE;
        $configB['maintain_ratio'] = TRUE;
        $configB['width'] = 300;
        $configB['height'] = 300;
        $this->image_lib->initialize($configB); 
        $this->image_lib->resize();

        $this->load->model('membership_model'); 
        // run my model which saves all this to the database, image name also ($filenew)   
        if($query = $this->membership_model->create_post($id,$data)) 
        {
            $data = array('upload_data' => $this->upload->data());
            $data['filename'] = $filenew; 
            $this->load->view('post_success_view', $data);

        }

Вот модель

function create_post($id, $data) 
{
    //get data from array
            $content = $data[0];
    $filename = $data[1]; 

    // update database to track a new post.
    $new_post_insert_data = array(
        'content' => $content,
        'beer_down' => 0,
        'beer_up' => 0,
        'user_name' => $this->session->userdata('username'),
        'account_id' => $this->session->userdata('userid'),
        'file_name' => $filename
        );

    $insert_post = $this->db->insert('post', $new_post_insert_data);
    return $insert_post;    
}

Спасибо заранее, еслиВы можете помочь мне застряли здесь на несколько часов.

1 Ответ

2 голосов
/ 13 апреля 2011

rename () изменяет имя системного ресурса и возвращает Bool для успеха.Когда вы приводите это логическое значение true к строке, вы получаете «1».Если вы хотите сохранить имя в БД, вы должны установить переменную, например:

$new_name = $dir . $id . '_' . $randomstring . '.jpg';

, затем вызвать переименование:

rename($dir . $file, $new_name);

и использовать $ new_name для вставки в базу данных..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...