0

重複の可能性:
警告: mysql_fetch_* はパラメーター 1 がリソースであると想定しており、ブール値のエラーが発生しました

複数のアップロードについてまだ学習中です。わかりました、ここに状況があります。そして、私は2つの警告を受けました:

警告: move_uploaded_file() は、パラメーター 1 が文字列であると想定し、32 行目の F:\wamp\www\dki\1\entry_fotos.php で指定された配列

警告: move_uploaded_file() は、パラメーター 1 が文字列であると想定し、45 行目の F:\wamp\www\dki\1\entry_fotos.php で指定された配列

これがコードです

   $ne_photo_images = $_FILES['ne_photo_image']['name'];
   $fe_photo_images = $_FILES['fe_photo_image']['name'];
   $tmp_file = $_FILES['ne_photo_image']['tmp_name'];
   $tmp_file1 = $_FILES['fe_photo_image']['tmp_name'];

      if(!is_array($ne_photo_images)) {
         $ne_photo_images = array();

    }

  if(!is_array($tmp_file)) {
        $tmp_file = array();
     }
       if(! move_uploaded_file($tmp_file, 'image/' . $ne_photo_images))

 if(!is_array($fe_photo_images)) {
        $fe_photo_images = array();
    }
 if(!is_array($tmp_file1)) {
        $tmp_file1 = array();
    }
    if(! move_uploaded_file($tmp_file1, 'image/' . $fe_photo_images))

以前の質問のフィードバックからこのクエリコードを取得しました

   $sql = "INSERT INTO photo(`photo_id`, `ne_photo_image`, `fe_photo_image`, `hop_id`,    `title`) VALUES";
   for($i = 0, $l = sizeof($titles) ; $i < $l ; $i++)
   {
      //adding row datas
      $sql .= " (null, 
                 '".$ne_photo_images [$i]."', 
                 '".$fe_photo_images [$i]."', 
                 '".$hopid."', 
                 '".$titles[$i]."')";
      if($i < $l - 1)
         $sql .= ",";
   }

   if(mysql_query($sql))
   {         
   }

これが私のフォームです:

<form method="post" enctype="multipart/form-data">
    <table border="0"cellpadding="0" cellspacing="0" width= "100%">
        <tr>
            <td>Hop Name :<?echo "$data[hop_name]"?>
                <input type='hidden' name='photo_hop_id' value='<?echo"$data[hop_id]"?>'>
            </td>
        </tr>
                <table border="0"cellpadding="0" cellspacing="0" width= "100%">
    <tr>
                <td cellpadding="0" cellspacing="0" width= "50%"> 
                    Near End Site Name : <?echo "$data[ne_site_name]"?>
                        </br>
                    Near End Site Id : <?echo "$data[ne_site_code]"?>
                </td>
                <td cellpadding="0" cellspacing="0" width= "50%"> 
                    Far End Site Name : <?echo "$data[fe_site_name]"?>
                        </br>
                    Far End Site Id : <?echo "$data[fe_site_code]"?>
                </td>
    </tr>   
    <tr>
                <td cellpadding="0" cellspacing="0" width= "50%"> 
                    <?  $pm1= mysql_query("SELECT photo_name FROM photo_name WHERE photo_name_id = 1");
                        $dpm1 = mysql_fetch_array ($pm1);echo"$dpm1[0]"?> 
                    <input type='hidden' name='photo_name_id[]' value='<?echo"$dpm1[0]"?>'> :  
                    <input type="file" name="ne_photo_image[]">
                </td>
                <td cellpadding="0" cellspacing="0" width= "50%"> 
                    <?echo "$dpm1[0]"?> : <input type="file" name="fe_photo_image[]">
                </td>
    </tr>   

</table>

    </table>
    <input type="submit" value="tambah" />
</form>

これが見つけやすいことを願っています。助けてくれてありがとう

4

2 に答える 2

0

これはあなたの問題を引き起こしています...

if(!is_array($ne_photo_images)) { $ne_photo_images = array(); }
if(!is_array($tmp_file)) { $tmp_file = array(); } 

$ne_photo_images が配列でない場合は空の配列に変更しますが、$tmp_file についても同じことが言えます。次に、$tmp_file をパラメータとして move_uploaded_file と $ne_photo_images に指定します。これは単一のファイルのみを移動します。ファイルの配列ではありません

enter code heremove_uploaded_file($tmp_file, 'image/' . $ne_photo_images))

あなたはこのようなことをすべきです

$ne_photo_images[] = $_FILES['ne_photo_image']['name'];
$ne_photo_images[] = $_FILES['fe_photo_image']['name'];
$tmp_file[] = $_FILES['ne_photo_image']['tmp_name'];
$tmp_file[] = $_FILES['fe_photo_image']['tmp_name'];   

そして、次のようなことをします

$allGood = true;
for($i = 0; $i < count($ne_photo_images); $i++)
{
  if (!move_uploaded_file($tmp_file[$i], 'image/' . $ne_photo_images[$i]))
  {
    $allGood = false;
  }
}

if (!$allGood) { die("Not all files where moved."); }

より一般的な解決策

foreach ($_FILES as $file)
{
  if (move_uploaded_files($file['tmp_name'], 'image/' . $file['name']))
  {
    // also insert the file into the database here

  }
}
于 2012-08-02T08:41:39.477 に答える
0

これが最終的なコードです

    $hopid = $_POST['photo_hop_id'];
$titles = $_POST['photo_name_id'];

$ne_photo_images = $_FILES[ne_photo_image][name];
$fe_photo_images = $_FILES[fe_photo_image][name];

while(list($key,$value) = each($_FILES['ne_photo_image']['name']))
    {
        if(!empty($value))
        {
            $filename = $value;
                $filename=str_replace(" ","_",$filename);// Add _ inplace of blank space in file name, you can remove this line

                $add = "image/$filename";
                   //echo $_FILES['images']['type'][$key];
             // echo "<br>";
                copy($_FILES['ne_photo_image']['tmp_name'][$key], $add);
                chmod("$add",0777);


        }
    }
         while(list($key,$value) = each($_FILES['fe_photo_image']['name']))
    {
        if(!empty($value))
        {
            $filename = $value;
                $filename=str_replace(" ","_",$filename);// Add _ inplace of blank space in file name, you can remove this line

                $add = "image/$filename";
                   //echo $_FILES['images']['type'][$key];
             // echo "<br>";
                copy($_FILES['fe_photo_image']['tmp_name'][$key], $add);
                chmod("$add",0777);


        }
    }

              $sql = "INSERT INTO photo(`photo_id`, `ne_photo_image`, `fe_photo_image`, `hop_id`,    `title`) VALUES";
   for($i = 0, $l = sizeof($titles) ; $i < $l ; $i++)
   {
      //adding row datas
      $sql .= " (null, 
                 '".$ne_photo_images [$i]."', 
                 '".$fe_photo_images [$i]."', 
                 '".$hopid."', 
                 '".$titles[$i]."')";
      if($i < $l - 1)
         $sql .= ",";
   }

   if(mysql_query($sql))
   {         
   }

   else
于 2012-08-02T18:07:24.357 に答える