从多维数组中提取值

时间:2011-07-09 11:13:18

标签: php arrays key multidimensional-array

我对php很新。我正在使用以下脚本将多个图像上载到目录。该脚本工作正常。我遇到的问题是我不知道如何引用第二个图像,所以我可以将它存储在一个mysql数据库中。变量$filename存储数组的图像元素。 我想将第二个图像添加到我的mysql数据库中的列itm_pic_name2。请有人指出我正确的方向。

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 :(得分:0)

将单个itm_pic_name2列添加到数据库是不够的。数据库结构不仅包含文件名。它还包含大小和类型。相反,您应该在数据库中插入多行 - 每行一个文件。每次插入图片时,都应该返回文件的fileId。

基本上,您需要的是表单数据的数据表。该表有两列。一个用于文件1.一个用于文件2.在该表中,存储每个文件的唯一文件ID。然后,使用联接来获取所需的文件信息。

我不能完全为你写出来,因为我没有任何关于你要对这些文件做什么的背景知识。但是,希望你可以把它作为一个开始并与它一起运行。