Php 我如何处理“3”;输入文件";一页上的字段?

Php 我如何处理“3”;输入文件";一页上的字段?,php,file-upload,file-io,Php,File Upload,File Io,我不希望一个字段具有多个属性,我需要3个单独的输入,这些输入将存储在一个MYSQL行中。当我运行页面时,它只在数据库和文件系统中存储第一个图像。我确信这与“tmp_名称”有关,但我不知道如何修复它 Array ( [name] => banner_large.jpg [type] => image/jpeg [tmp_name] => C:\wamp\tmp\php3936.tmp [error] => 0 [size] =>

我不希望一个字段具有多个属性,我需要3个单独的输入,这些输入将存储在一个MYSQL行中。当我运行页面时,它只在数据库和文件系统中存储第一个图像。我确信这与“tmp_名称”有关,但我不知道如何修复它

Array
(
    [name] => banner_large.jpg
    [type] => image/jpeg
    [tmp_name] => C:\wamp\tmp\php3936.tmp
    [error] => 0
    [size] => 37536
)
Array
(
    [name] => banner_medium.jpg
    [type] => image/jpeg
    [tmp_name] => C:\wamp\tmp\php3947.tmp
    [error] => 0
    [size] => 23017
)
Array
(
    [name] => banner_small.jpg
    [type] => image/jpeg
    [tmp_name] => C:\wamp\tmp\php3948.tmp
    [error] => 0
    [size] => 13887
)


请帮助。

您将在
foreach循环中返回。返回将退出循环

 $ct = 0;
 foreach ($_FILES as $value) {
    $filearray[$ct] = $value;
    $ct++;
 }
 foreach ($filearray as $file) {
    if ($file['error'] != 0) {
       // error: report what PHP says went wrong
       $this -> errors[] = $this -> upload_errors[$file['error']];
       return false;
    } else {
       $this -> temp_path = $file['tmp_name'];
       $this -> type = $file['type'];
       if ($loop == 0) {
          $this -> filename = basename($file['name']);
          $this -> size = $file['size'];
       } elseif ($loop == 1) {
          $this -> filenamem = basename($file['name']);
          $this -> sizem = $file['size'];
       } else {
          $this -> filenames = basename($file['name']);
          $this -> sizes = $file['size'];
       }
    }
 }
 return true;

我有两件事要提

  • 为什么要遍历$\u FILES数组并将其置于与以前完全相同的状态?默认情况下,数组从0开始编号,您只需再次执行该过程。因此,不要创建fileArray,只需使用$\u文件即可

  • 为什么要将图像属性设置为对象属性?这些属性不是数组,所以您可以将它们设置为数组(例如,$this->temp_path[]),或者将它们插入到实际的foreach循环中的数据库中


  • 而且你的$loop也不是由它的外观来定义的。

    你不是在任何地方定义
    $loop
    ?此外,此代码不会将图像保存到任何位置。尝试上传完整的代码谢谢,$循环在前面创建,但我没有增加它。由于您的帮助,数据库现在存储了所有三个文件,但文件系统中只存储了一个文件。我会再找一次。代码太大,无法全部上载。这和for循环应该具有$key=>$val结构,如
    foreach($filearray as$loop=>$file){
    我尝试访问$\u文件[0]等。但它给出了一个错误,因此我将对象从数组中剥离出来。$loop在前面定义过,但如果没有增加(非常尴尬)。现在一切都很好。
     $ct = 0;
     foreach ($_FILES as $value) {
        $filearray[$ct] = $value;
        $ct++;
     }
     foreach ($filearray as $file) {
        if ($file['error'] != 0) {
           // error: report what PHP says went wrong
           $this -> errors[] = $this -> upload_errors[$file['error']];
           return false;
        } else {
           $this -> temp_path = $file['tmp_name'];
           $this -> type = $file['type'];
           if ($loop == 0) {
              $this -> filename = basename($file['name']);
              $this -> size = $file['size'];
           } elseif ($loop == 1) {
              $this -> filenamem = basename($file['name']);
              $this -> sizem = $file['size'];
           } else {
              $this -> filenames = basename($file['name']);
              $this -> sizes = $file['size'];
           }
        }
     }
     return true;