Извлечение значений из многомерного массива - PullRequest
0 голосов
/ 09 июля 2011

Я довольно новичок в php.Я использую следующий скрипт для загрузки нескольких изображений в каталог.Скрипт работает отлично.У меня проблема, я не знаю, как ссылаться на второе изображение, чтобы я мог сохранить его в базе данных MySQLПеременная $filename хранит элементы изображения массива.Я хочу добавить второе изображение в столбец itm_pic_name2 в моей базе данных MySQL.Пожалуйста, кто-нибудь может направить меня в правильном направлении.

public function move($overwrite = false)
{
    $field = current($this->_uploaded);
    if (is_array($field['name'])) {
        foreach ($field['name'] as $number => $filename) {
            print_r($field);
            //process the multiple upload
            $this->_renamed = false;
            $this->processFile($filename, $field['error'][$number], $field['size'][$number], $field['type'][$number], $field['tmp_name'][$number], $overwrite);
        }
    } else {

        $this->processFile($field['name'], $field['error'],
                           $field['size'], $field['type'], $field['tmp_name'], $overwrite);
    }
}

protected function processFile($filename, $error, $size, $type, $tmp_name, $overwrite)
{
    $OK = $this->checkError($filename, $error);
    if ($OK) {
        $sizeOK = $this->checkSize($filename, $size);
        $typeOK = $this->checkType($filename, $type);
        if ($sizeOK && $typeOK) {
            $name = $this->checkName($filename, $overwrite);
            echo $filename;
            echo $type;
            echo $size;
            $success = move_uploaded_file($tmp_name, $this->_destination . $name);
            if ($success) {
                //add the amended filename to the array of filenames
                $this->_filenames[] = $name;

                $this->execSQL("INSERT INTO itm_pic_detail(itm_pic_name, itm_pic_name2,itm_pic_type, itm_pic_size) VALUES (?,?,?)",
                               array('ssss', $filename, $not_sure_how_to_refence_this_image, $type, $size), true);
                $message = "$filename uploaded successfully";
            }
            if ($this->_renamed) {
                $message .= " and renamed $name";
            }
            $this->_messages[] = $message;
        } else {
            $this->_messages[] = 'Could not upload ' . $filename;
        }
    }
}

1 Ответ

0 голосов
/ 09 июля 2011

Недостаточно добавить один столбец itm_pic_name2 в базу данных.Структура базы данных содержит больше, чем просто имя файла.Он также содержит размер и тип.Вместо этого вы должны вставить несколько строк в базу данных - по одному файлу на строку.Каждый раз, когда вы вставляете картинку, она должна возвращать fileId для файла.

По сути, вам нужна таблица данных для ваших данных формы.Эта таблица будет иметь два столбца.Один для файла 1. Один для файла 2. В этой таблице вы храните уникальный идентификатор файла для каждого файла.Затем вы используете объединения, чтобы получить необходимую информацию о файле.

Я не могу написать это для вас точно, потому что у меня нет никакого представления о том, что вы пытаетесь сделать с файлами.Но, надеюсь, вы можете принять это как начало и работать с ним.

...